本人刚学习ios开发,有很多不懂的地方,期待和大家的交流;也是第一次写博客,写得不好的地方请多多包涵。
最近一段时间在开发一个跑步软件,要用到高德地图来显示用户当前位置,记录用户跑步轨迹,下面就说说这个高德地图的使用和一些需要注意的地方吧。
一.配置工程
高德地图我是用cocoaPods来管理的,cocoaPods不知道怎么使用的可以去百度一下,网上很多教程
(1)因为只是显示用户的位置,所以没必要使用3D地图,就使用的'AMap2DMap',先配置工程,既然是跑步,地图肯定得后台运行,在配置工程里面点击TARCETS->Capabilities,选择下图所示的Background Modes,勾选Location updates
(2)在plist文件中加入‘NSLocationWhenInUseUsageDescription’或‘NSLocationAlwaysUsageDescription’字段,它是一个string类型的,值就是提示用户开启定位之内的内容(如下图所示)
NSLocationWhenInUseUsageDescription 表示应用在前台的时候可以搜到更新的位置信息。 NSLocationAlwaysUsageDescription 表示应用在前台和后台(suspend或terminated)都可以获取到更新的位置数据
iOS9为了增强数据访问安全,将所有的http请求都改为了https,为了能够在iOS9中正常使用地图SDK,请在"Info.plist"中进行如下配置,否则影响SDK的使用:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
如下图所示:
在iOS9中为了能正常调起高德地图App的功能,必须在"Info.plist"中将高德地图App的URL scheme列为白名单,否则无法调起,配置如下:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>iosamap</string>
</array>
如下图所示:
到这里工程基本配置完成。
二.接下来就是代码部分
(1)在AppDelegate.m中导入如下头文件
#import <MAMapKit/MAMapKit.h>
在地图初始化之前- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法里面添加如下代码,配置之前在官网上申请的Key(如果在高德地图官网没有申请应用获取到key值,你还得去高德官网申请一个应用获取key值)
[MAMapServices sharedServices].apiKey = @"你申请的key";
如果出现如下情况,就是你申请的key值与你工程的Bundle Identifier不匹配,需要去高德官网重新配置一下
(2)接下来就是初始化地图,在需要初始化的ViewController里导入头文件
#import <MAMapKit/MAMapKit.h>
再初始化地图
//初始化地图
MAMapView *mapView = [[MAMapView alloc] initWithFrame:self.view.frame];
//是否显示用户位置
mapView.showsUserLocation = YES;
//设置代理
mapView.delegate = self;
//加载mapView
[self.view addSubview:mapView];
如果需要后台定位,还得设置下面两个属性