MapView

17 Mar 2025 | 5 分钟阅读

MapView 是一个对象,可以在 iOS 应用程序中显示可嵌入的地图界面。 它与 Maps 应用程序提供的类似。 它是 MKMapView 类的一个实例,该类继承自 UIView 类。

为了在 iOS 应用程序中显示地图视图,我们需要在对象库中搜索 MKMapView,并将结果拖动到情节提要,如下图所示。

iOS MapView

但是,如果我们将地图视图添加到界面,定义地图视图的自动布局规则并运行应用程序,模拟器将显示下图所示的输出。

iOS MapView

要在 iOS 应用程序中使用 MapView,我们必须导入 MapKit,因为 MKMapView 存在于 iOS MapKit 中。 MapKit 是一个强大的 API,适用于 iOS 设备,通过它我们可以显示位置、显示路线、形状以及更多地理内容。 通过使用 MapKit 中存在的属性和方法,我们可以放大到特定位置,将地图居中于指定的坐标,指定我们要显示的区域大小,并使用自定义位置注释地图。 我们可以使用 region 属性初始化地图视图,以指定地图的特定区域。

区域是由水平和垂直距离定义的中心点,称为跨度。 跨度定义了地图的可见性。 例如,指定大跨度会导致在低缩放级别显示较宽的地理区域。

MapView 示例 1:在地图中设置初始区域

在本例中,我们将设置地图视图的初始区域。 为此,我们需要通过实例化 CLLocation 类来创建一个位置对象。 可以使用以下语法创建位置对象。

此方法接受两个参数,即特定位置的纬度和经度。 在 MapKit 中,我们纬度和经度是 CLLocationDegrees 类的实例。

ViewController.swift

输出

iOS MapView

在地图上显示艺术作品

MapKit 方便我们显示地图中心位置的艺术作品。 要在地图视图上显示此内容,我们必须创建一个地图注释。 地图注释被定义为为特定位置显示的小信息片段。 Apple 地图上的注释由小图钉表示。

在本例中,我们将为地图的中心位置创建注释。 要创建注释,我们必须创建一个符合 MKAnnotation 协议的类。 ArtWork.swift 类符合 MKAnnotation 协议,然后将其添加到 ViewController.swift 类中的 Map 中。

ArtWork.swift

ViewController.swift

输出

iOS MapView

MKMapView 属性

MKMapView 类中定义的属性在下表中给出。

序号属性描述
1var delegate: MKMapViewDelegate?它是类型为 MKMapViewDelegate 协议的接收器的代理。
2var mapType: MKMapType它是地图视图显示的数据类型。
3var isZoomEnabled: Bool它是一个布尔类型的值,指示是否为地图视图启用了缩放。
4var isScrollEnabled: Bool它是一个布尔类型的值,指示是否为地图视图启用了滚动。
5var isPitchEnabled: Bool它是一个布尔类型的值,指示是否使用地图相机的倾斜信息。
6var isRotateEnabled: Bool它是一个布尔类型的值,指示是否使用地图相机的航向信息。
7var region: MKCoordinateRegion它是地图显示的初始区域。
8var centerCoordinate: CLLocationCoordinate2D要由地图中心显示的坐标。
9var visibleMapRect: MKMapRect它是地图视图当前显示的区域。
10var cameraBoundary: MKMapView.CameraBoundary?它表示 mapView 中心必须保持在其中的区域边界。
11var cameraZoomRange: MKMapView.CameraZoomRange!它表示地图相机的缩放范围。
12var camera: MKMapCamera它表示用于确定地图外观的相机。
13var pointOfInterestFilter: MKPointOfInterestFilter?它表示用于确定地图上显示的兴趣点的过滤器。
14var showsBuildings: Bool它是表示是否显示建筑物信息的布尔值。
15var showsCompass: Bool它是指示地图是否显示指南针控件的布尔值。
16var showsZoomControls: Bool它是指示地图是否显示缩放控件的布尔值。
17var showsScale: Bool它是指示地图是否显示比例信息的布尔值。
18var showsTraffic: Bool它是一个布尔值,指示是否显示交通信息。
19var showsUserLocation: Bool它是一个布尔值,指示地图是否应尝试显示用户的位置。
20var isUserLocationVisible: Bool它是一个布尔值,指示用户的当前位置是否显示在地图视图上。
21var userLocation: MKUserLocation它表示用户的当前位置。
22var userTrackingMode: MKUserTrackingMode它表示用于跟踪用户当前位置的模式。
23var annotations: [MKAnnotation]它是不同地图中心位置的注释数组。
24var annotationVisibleRect: CGRect它表示当前正在显示注释视图的可见矩形。
25var selectedAnnotations: [MKAnnotation]它表示当前正在选择的注释。
28var overlays: [MKOverlay]它表示当前与地图视图关联的覆盖对象。

下一个主题IOS UiViewController