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

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 高德地图 & 定位的一些坑)