MKMapView MapKit(SwiftUI UIKit中文文档手册)
MKMapView
可嵌入的地图界面,类似于Maps应用程序提供的界面。
class MKMapView : UIView
class MKMapView : NSView
总览
您可以按原样使用此类来显示地图信息并从应用程序中操纵地图内容。您可以在给定坐标上将地图居中,指定要显示的区域的大小,并使用自定义信息为地图添加注释。初始化地图视图时,可以通过设置region地图的属性来指定该地图要显示的初始区域。区域由中心点以及水平和垂直距离(称为跨度)定义。跨度定义应显示多少地图,以及如何设置缩放级别。例如,指定较大的跨度会导致用户在低缩放级别下看到广阔的地理区域,而指定较小的跨度会导致更窄的地理区域和更高的缩放级别。
除了以编程方式设置跨度外,该类还支持许多标准交互方式,用于更改地图的位置和缩放级别。特别是,地图视图支持轻拂和捏合手势,用于在地图上滚动以及放大和缩小。这些手势的支持默认情况下处于启用状态,但也可以使用和属性禁用。MKMapViewisScrollEnabledisZoomEnabled
您也可以使用投影地图坐标而不是区域来指定一些值。将地球仪的弯曲表面投影到平坦表面上时,会得到地图的二维版本,其中经度线看起来是平行的。要指定位置和距离,使用,以及数据类型。MKMapPointMKMapSizeMKMapRect
尽管您不应该对类本身进行子类化,但是可以通过提供委托对象来获取有关地图视图行为的信息。地图视图调用您的自定义委托的方法,以使其了解地图状态的变化并协调自定义注释的显示,这在“ 注释地图”中有更详细的描述。委托对象可以是您应用程序中的任何对象,只要它符合协议。有关实现委托对象的更多信息,请参见。MKMapViewMKMapViewDelegateMKMapViewDelegate
在macOS 10.14及更高版本中,您可以通过修改appearance地图视图(或其祖先视图之一)的属性来对地图应用浅色或深色外观。即使您指定了自定义外观,用户也可以使用“地图”应用强制所有地图采用浅色外观。使用地图视图的属性来确定地图的实际外观。有关如何设置视图外观的信息,请参阅为macOS App选择特定的外观。effectiveAppearance
注释地图
本类支持注释自定义信息的地图的能力。因为地图可能具有大量注释,所以地图视图会区分用于管理注释数据的注释对象和用于在地图上显示该数据的视图对象。MKMapView
一个注释对象是任何对象,它符合的MKAnnotation协议。注释对象通常使用应用程序数据模型中的现有类来实现。这使您可以直接操作注释数据,但仍可将其用于地图视图。每个注释对象都包含有关注释在地图上的位置的信息以及可以在标注中显示的描述性信息。
屏幕上的注释对象的呈现由注释视图(该类的实例)处理。注释视图负责以一种有意义的方式显示注释数据。例如,“地图”应用程序使用标记图标表示地图上的特定兴趣点。(Map Kit框架在您自己的应用程序中为相似的注释提供了和类。)您还可以创建覆盖地图较大部分的注释视图。MKAnnotationViewMKMarkerAnnotationViewMKPinAnnotationView
由于注释视图仅在屏幕上才需要,因此该类提供了一种使未使用的注释视图排队的机制。当带有重用标识符的注释视图移出屏幕时,可以由地图视图在内部分离并排队。此功能通过一次在内存中仅保留少量批注视图并回收您拥有的视图来改善内存使用。通过减轻地图滚动时创建新视图的需要,它还提高了滚动性能。MKMapView
配置地图界面时,应立即添加所有注释对象。地图视图使用每个注释对象中的坐标数据来确定何时需要在屏幕上显示相应的注释视图。当注释在屏幕上移动时,地图视图会要求其委托创建相应的注释视图。如果您的应用程序具有不同类型的注释,则可以定义不同的注释视图类来表示每种类型。
在地图上添加叠加层
您可以使用叠加层在地图的大部分区域上对内容进行分层。一个覆盖对象是任何对象,它符合的MKOverlay协议。叠加层对象是一个数据对象,其中包含指定叠加层的形状和大小及其在地图上的位置所需的点。叠加图可以表示形状,例如圆形,矩形,多段线以及简单或复杂的多边形。您还可以定义自己的自定义叠加层来表示其他形状。
在iOS 7和macOS 10.9及更高版本中,叠加层的表示由叠加层渲染器对象处理,该对象是类的实例。渲染器的工作是在地图视图要求时将叠加层的内容绘制到屏幕上。例如,如果您有一个表示公交路线的简单叠加层,则可以使用多段线渲染器绘制跟踪公交路线的线段。您还可以定义一个自定义渲染器,在每个公交车站的位置绘制公交路线和图标。指定叠加层时,可以将其添加到地图的特定级别,从而可以在其他类型的地图内容之上或之下呈现它们。在iOS 7之前的版本中,使用类的实例即叠加视图在屏幕上绘制叠加。MKOverlayRendererMKOverlayView
配置地图界面时,您可以随时添加叠加层对象。地图视图使用每个叠加层对象中的数据来确定何时需要将相应的叠加层视图显示在屏幕上。当叠加层在屏幕上移动时,地图视图会要求其委托创建相应的叠加层渲染器。
技术交流
QQ:3365059189
SwiftUI技术交流QQ群:518696470
推荐阅读
-
RotationGesture 旋转手势 (SwiftUI 中文文档手册)
-
Button 按钮(SwiftUI中文文档手册)
-
PDFView PDFKit (SwiftUI中文文档手册)
-
monospacedDigit() (SwiftUI UIKit中文文档手册)
-
MKMapView MapKit(SwiftUI UIKit中文文档手册)
-
CGImageSourceCreateWithData (SwiftUI UIKit中文文档手册)
-
NSHostingController (SwiftUI中文文档手册)
-
UIViewRepresentable (SwiftUI UIKit中文文档手册)
-
sheet(isPresented:onDismiss:content:) (SwiftUI 中文文档手册 教程含源码)
-
MKCoordinateSpan 缩放层级 MapKit (SwiftUI 中文手册文档)