【iOS】Mapkit的使用:地图显示、定位、大头针、气泡等

以前做项目用高德地图SDK,需要注册账号和AppID,然后下载SDK集成到项目中,比较麻烦,这几天看了下苹果自带的MapKit框架,感觉挺好用,官方文档也介绍得很详细,所以按照官方文档写了个demo,实现地图的显示、显示用户当前位置、放置大头针、弹出气泡等基本功能。希望能帮到刚接触MapKit的朋友~1.显示地图

(1)首先我们要像下图这样子打开地图功能:

XCode会自动给我们的项目进行配置,例如会自动给我们添加MapKit.frameworks。

(2)在需要使用地图的类中

#import <MapKit/MapKit.h>

(3)显示地图有两种方法:

<1>使用Interface Builder, 拖一个Map view对象到View中

<2>使用纯代码,创建一个MKMapView的实例,使用initWithFrame:来进行初始化,最后将它作为subview添加到windows或者其它UIView上。

因为一个map view是一个UIView子类,所以可以像操作其它View那样操作map view,因此可以给map view添加任何subview,但是添加的subview并不会随着地图内容的移动而移动,如果需要跟随移动,必须使用annotations 或者 overlays。

新建的地图,默认只是显示地图数据以及响应用户手势。通过创建MKMapCamera实例,可以进行3D地图显示,通过设置mapType属性可以设置地图来显示卫星地图、卫星地图和地图数据的混合视图,通过改变属性rotateEnabled, pitchEnabled, zoomEnabled,scrollEnabled 等,可以限制用户的控制权限。通过实现代理MKMapViewDelegate ,可以响应用户的手势操作。

以下为使用第<2>种方法来显示地图:

mapView = [[MKMapView alloc] initWithFrame:self.view.bounds];[self.view addSubview:mapView];运行效果如下:

2.设置地图的默认显示区域

typedef struct { CLLocationCoordinate2D center; MKCoordinateSpan span;} MKCoordinateRegion;

其中span是使用度、分、秒为单位的,一度约等于111km,但是我们一般习惯使用的是长*宽的数据,因此可以使用,106.529259),南北方向和东西方向均为5km的区域

[mapView setRegion:MKCoordinateRegionMakeWithDistance(CLLocationCoordinate2DMake(29.454686, 106.529259), 5000, 5000) animated:YES];添加上面一句代码后,步骤1中的视图变成了下图的效果:

3.显示3D地图

3D地图是从某个海拔高度点以一定角度俯瞰2D地图的视图,在iOS7和OSX10.9及以后版本,可以使用MKMapCamera类来调整3D地图。

一个MKMapCamera实例类camera,使用下面的属性来确定3D地图:

海拔高度(Altitude). camera的距离2D地图平面的高度,单位米

斜度(Pitch).camera相对于地面倾斜的角度(其中0度表示垂直往下看,所以效果是标准的2D地图)

方向(Heading). camera面对的方向

中心(Center). 显示在屏幕正中间的地图表面的点

或许举一个例子就秒懂了,下面的代码就是实现从经纬度(29.545686,,106.529259)的效果:

// Create a coordinate structure for the location.CLLocationCoordinate2D ground = CLLocationCoordinate2DMake(29.454686, 106.529259);// Create a coordinate structure for the point on the ground from which to view the location.CLLocationCoordinate2D eye = CLLocationCoordinate2DMake(29.545686, 106.628259);// Ask Map Kit for a camera that looks at the location from an altitude of 100 meters above the eye coordinates.MKMapCamera *myCamera = [MKMapCamera cameraLookingAtCenterCoordinate:ground fromEyeCoordinate:eye eyeAltitude:100];// Assign the camera to your map viewmapView.camera = myCamera;

4.滑动和缩放地图内容

通过滑动和缩放可以随时改变地图的显示区域

通过滑动地图,改变map view或者camera的centerCoordinate 值,或者直接调用map view的setCenterCoordinate:animated: 或者setCamera:animated: 方法

改变放大级别,改变map view的region属性的值,或者调用setRegion:animated:方法,你也可以在3D地图中改变camera的海拔高度的值(设置海拔高度为双倍或者一半,,大约等于放大或缩小一个级别)。

例如,下面的代码将地图往左移动当前地图宽度的一半的距离,并且带有移动的动画效果。

如你想要拥有完美无暇的友谊,可能一辈子找不到朋友

【iOS】Mapkit的使用:地图显示、定位、大头针、气泡等

相关文章:

你感兴趣的文章:

标签云: