美文网首页程序员
iOS 高德地图 & 定位的一些坑

iOS 高德地图 & 定位的一些坑

作者: 新南12138 | 来源:发表于2018-06-11 17:49 被阅读22次

1.高德地图

1.1 MAMapView 在首次打开的时候无法正常的定位到当前位置

  1. 问题:
    在地图初始化完成了以后,有时候会定位到北京,有时候会正常的定位本地。存在一定的几率无法正常定位到当前位置的问题。

2.原因:
在进行 MAMapView 展示的时候,有时候还没有进行对地图进行手势的操作,拖拉、缩放之类的动作。还没有出发用户操作的那些代理方法,应该在位置变化的时候,初始化得到用户的当前位置,这样才可以搜索附近的 POI 数据

  /**
 * @brief 位置或者设备方向更新后,会调用此函数
 * @param mapView 地图View
 * @param userLocation 用户定位信息(包括位置与设备方向等数据)
 * @param updatingLocation 标示是否是location数据更新, YES:location数据更新 NO:heading数据更新
 **/
- (void)mapView:(MAMapView *)mapView didUpdateUserLocation:(MAUserLocation *)userLocation updatingLocation:(BOOL)updatingLocation;

把下面的代码粘上去就可以正常的定位了

 - (void)mapView:(MAMapView *)mapView didUpdateUserLocation:(MAUserLocation *)userLocation updatingLocation:(BOOL)updatingLocation
{
if(!updatingLocation)
    return ;

if (userLocation.location.horizontalAccuracy < 0)
{
    return ;
}

// only the first locate used.
if (!self.isLocated)
{
    self.isLocated = YES;
    
    [_mapView setCenterCoordinate:CLLocationCoordinate2DMake(userLocation.location.coordinate.latitude, userLocation.location.coordinate.longitude)];
    _mapView.userTrackingMode = MAUserTrackingModeFollow;
    aMapPOIAroundSearchRequest.location = [AMapGeoPoint locationWithLatitude:userLocation.coordinate.latitude longitude:userLocation.coordinate.longitude];
    
    [_aMapSearchAPI AMapPOIAroundSearch:aMapPOIAroundSearchRequest];
}
}

2 GPS 定位的一些坑

1.定位

GPS 的定位停留在上一次的位置,无论怎么定位都停留在上一次的位置无法刷新。

2.解决方法:

打开 wifi和蜂窝网络辅助定位进行尝试 ,或者在隐私中重新启动定位服务

3.原因

1.GPS 的小科普

GPS的空间部分是由24颗卫星组成(21颗工作卫星;3颗备用卫星),它位于距地表20200km的上空,运行周期为12h。卫星均匀分布在6个轨道面上(每个轨道面4颗),轨道倾角为55°。卫星的分布使得在全球任何地方、任何时间都可观测到4 颗以上的卫星,并能在卫星中预存导航信息,GPS的卫星因为大气摩擦等问题,随着时间的推移,导航精度会逐渐降低。(来自:百度百科)。

2.定位出错的原因

我们能够进行导航就是因为在我们头顶上的这21颗 gps 的工作卫星。并且GPS 的导航其实是基于这些卫星信号进行的,如果信号在传输的过程中受损或者中断,就会导致定位不准的问题。因此在高楼林立的地方 GPS 定位就比较差,在空旷的地方定位就比较准确。

3.修正误差

现在我们进行定位的时候,不仅仅是只用 GPS 进行定位,而是混合定位。就是 GPS、WiFi、蜂窝网络一起进行的定位服务。通过 WiFi 和蜂窝网络可以减少 GPS 定位存在的误差。

3.结束

最近在做 POI的搜索和基于高德地图的定位服务,踩了很多的坑,对 GPS的定位有了一些新的认识。希望能和大家分享

相关文章

  • iOS 高德地图 & 定位的一些坑

    1.高德地图 1.1 MAMapView 在首次打开的时候无法正常的定位到当前位置 问题:在地图初始化完成了以后,...

  • 获取SHA1

    今天遇到集成高德地图,不,是融云中的高德地图定位,填坑的。定位失败,一直提示定位失败,报错说key过期或者不正确。...

  • iOS 高德地图的使用

    iOS:高德地图的使用 本人花了点时间集成了高德地图的几乎所有的功能,包含:地图的显示、地图的绘制、地图的定位、地...

  • iOS 定位 高德地图

    最近项目中有需求需要使用定位,上报经纬度和地址信息,还有可以在地图界面随意选择地点,因为和后台经纬度匹配的问题,所...

  • 高德地图持续定位与单次定位简谈(持续更新)

    概述 高德 iOS 定位 SDK 提供了不依赖于地图定位的定位功能,开发者可以无地图显示的场景中便捷地为应用程序添...

  • iOS 高德地图开发详解

    iOS 高德地图开发详解

  • iOS 使用高德地图正确姿势(三)

    iOS 使用高德地图正确姿势(一)iOS 使用高德地图正确姿势(二) 实现大头针始终在地图中心,拖动地图实时poi...

  • iOS 高德地图以及定位

    AppDelegate中 初始化高德地图 根据输入的地址获取经纬度,并让地图定位其位置

  • 关于高德地图的MAMapView踩坑

    关于高德地图的MAMapView踩坑 在使用高德地图的MAMapView地图的时候碰到无法设置size的情况: 地...

  • RN-地图导航

    调起百度网页地图路径导航 调起高德网页地图路径导航 iOS调起百度APP地图路径导航 iOS调起高德app地图路径...

网友评论

  • 8b29bb6873e4:请问火星坐标的问题,你定位的时候有转化么?
    新南12138:@Summer_sk 一般来说 gps 定位不会存在特别大的误差,但是周围环境复杂的时候误差就会比较大,比如你出门离家很远了,但是你定位依旧存在家的哪里,这个是gps 的问题。你说的火星坐标 只是一种经纬度的表示。归根到底是gps 的反应灵敏的问题
    8b29bb6873e4:定位有偏差,导航不准确 是因为 火星坐标的问题么?
    新南12138:@Summer_sk 没有转化过:smile:
  • hu9134:你好,请教一个问题.集成的高德地图,怎么设置滑动地图的时候,比如左滑的时候能够回到原点,地图现在显示亚洲,一直左滑,仍然能够回到亚洲?这个怎么设置啊?谢谢
    新南12138:@hu9134 地图是个map view 应该有个delegate ,用来检测用户的动作 你可以看看那个

本文标题:iOS 高德地图 & 定位的一些坑

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