美文网首页iOS 开发 IOS三人行iOS地图
如何开发一个简单的百度地图--定位(二)

如何开发一个简单的百度地图--定位(二)

作者: Lee0528 | 来源:发表于2016-10-12 14:40 被阅读471次

今天继续跟大家介绍百度地图的用法,首先我们从基本的功能开始,定位是不可缺少的功能,我们就先从定位开始。

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,否则也是无法定位的。

好了这就是百度地图的手动定位,定位比较简单,希望能帮助到大家,后期我还会继续更新百度地图的其他功能,如果有写的不好的地方希望大家能提出宝贵的意见!谢谢!!!

相关文章

网友评论

  • H5:为神马晃一下手机 会自己回到定位点
    Lee0528:@H5 因为手机一晃动就会调用百度里定位的方法,相当于实时跟踪。手机位置一变就会调用那个方法。
  • Persistent丧心病狂:为哈没找到你这个头文件
    Lee0528:哪个?
  • Persistent丧心病狂:就是这样的吗?为神马我的不能定位?
    Lee0528:@好好学习_我说的是一辈子 不能定位是怎么不能定位,是定位不到?提示什么了没,项目能跑起来吗?
    Persistent丧心病狂:@Lee0528 BaiduMapAPI/BMKLocationService.h 这个头文件 我用cocoaPods集成的 为啥不能定位 ,求帮助
    Lee0528:不能定位?提示什么了没?
  • 叁號選手:你的 demo 下载下来报错4个ld: warning: ignoring file /Users/lisisi/Downloads/BaiDuMap-master/Frameworks/BaiduMapAPI.framework/BaiduMapAPI, missing required architecture arm64 in file /Users/lisisi/Downloads/BaiDuMap-master/Frameworks/BaiduMapAPI.framework/BaiduMapAPI (2 slices)
    Undefined symbols for architecture arm64:
    "_OBJC_CLASS_$_BMKMapManager", referenced from:
    objc-class-ref in AppDelegate.o
    "_OBJC_CLASS_$_BMKLocationService", referenced from:
    objc-class-ref in ViewController.o
    "_OBJC_CLASS_$_BMKMapView", referenced from:
    objc-class-ref in ViewController.o
    ld: symbol(s) not found for architecture arm64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    Lee0528:@叁號選手你好,你是用模拟器运行的,还是真机。
    Lee0528:@叁號選手 好的,我看下:smile:
  • 巴图鲁:膜拜

本文标题:如何开发一个简单的百度地图--定位(二)

本文链接:https://www.haomeiwen.com/subject/girbyttx.html