如何开发一个简单的百度地图--定位(二)
今天继续跟大家介绍百度地图的用法,首先我们从基本的功能开始,定位是不可缺少的功能,我们就先从定位开始。
1.首先需要在info.plist里添加(以下二选一,两个都添加默认使用NSLocationWhenInUseUsageDescription):
NSLocationWhenInUseUsageDescription ,允许在前台使用时获取GPS的描述 NSLocationAlwaysUsageDescription ,允许永久使用GPS的描述
2.然后导入头文件 BaiduMapAPI/BMKLocationService.h
,并写上代理 BMKLocationServiceDelegate
,然后我们初始化一个定位的BMKLocationService
类
如图
3.然后我们添加一个定位的按钮
定位按钮
它的点击事件
定位点击事件4.然后我们把定位的代理写上
//在地图View将要启动定位时,会调用此函数 (void)willStartLocatingUser { NSLog(@"开始定位"); } //在地图View停止定位后,会调用此函数 (void)didStopLocatingUser { NSLog(@"停止定为"); } //定位失败后,会调用此函数 (void)didFailToLocateUserWithError:(NSError *)error { NSLog(@"定位失败"); } //用户方向更新后,会调用此函数 (void)didUpdateUserHeading:(BMKUserLocation *)userLocation { [mapView updateLocationData:userLocation]; // NSLog(@"位置在 %@",userLocation.heading); } //用户位置更新后,会调用此函数 (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation { // NSLog(@"didUpdateUserLocation lat %f,long %f",userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude); [mapView updateLocationData:userLocation]; }
这些事定位的代理,一定要都写上,不然无法显示。
还有下面的也一定要加上
最后我们来看一下运行起来的效果
手动定位.gif下面我说一下注意事项:
- 代理记得一定要写上写全,有一个漏掉的就可能会导致无法显示定位
- 模拟器有时候会无法定位,需要你设置一下才行
打开模拟器在上面找到Debug->Location->Custom Location 在里面设置位置坐标,如果设置了还不管用的话可以切换别的在切换回来试试,也可以用真机来运行
- 点击定位后的触发事件里一定要记得加上
mapView.userTrackingMode = BMKUserTrackingModeNone; mapView.showsUserLocation = YES;
- 还有info.plist里面别忘了加上上面提到的
NSLocationWhenInUseUsageDescription
,否则也是无法定位的。
好了这就是百度地图的手动定位,定位比较简单,希望能帮助到大家,后期我还会继续更新百度地图的其他功能,如果有写的不好的地方希望大家能提出宝贵的意见!谢谢!!!