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

1.高德地圖

1.1 MAMapView 在首次打開的時候無法正常的定位到當(dāng)前位置

  1. 問題:
    在地圖初始化完成了以后,有時候會定位到北京,有時候會正常的定位本地。存在一定的幾率無法正常定位到當(dāng)前位置的問題。

2.原因:
在進(jìn)行 MAMapView 展示的時候,有時候還沒有進(jìn)行對地圖進(jìn)行手勢的操作,拖拉、縮放之類的動作。還沒有出發(fā)用戶操作的那些代理方法,應(yīng)該在位置變化的時候,初始化得到用戶的當(dāng)前位置,這樣才可以搜索附近的 POI 數(shù)據(jù)

  /**
 * @brief 位置或者設(shè)備方向更新后,會調(diào)用此函數(shù)
 * @param mapView 地圖View
 * @param userLocation 用戶定位信息(包括位置與設(shè)備方向等數(shù)據(jù))
 * @param updatingLocation 標(biāo)示是否是location數(shù)據(jù)更新, YES:location數(shù)據(jù)更新 NO:heading數(shù)據(jù)更新
 **/
- (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和蜂窩網(wǎng)絡(luò)輔助定位進(jìn)行嘗試 ,或者在隱私中重新啟動定位服務(wù)

3.原因

1.GPS 的小科普

GPS的空間部分是由24顆衛(wèi)星組成(21顆工作衛(wèi)星;3顆備用衛(wèi)星),它位于距地表20200km的上空,運(yùn)行周期為12h。衛(wèi)星均勻分布在6個軌道面上(每個軌道面4顆),軌道傾角為55°。衛(wèi)星的分布使得在全球任何地方、任何時間都可觀測到4 顆以上的衛(wèi)星,并能在衛(wèi)星中預(yù)存導(dǎo)航信息,GPS的衛(wèi)星因為大氣摩擦等問題,隨著時間的推移,導(dǎo)航精度會逐漸降低。(來自:百度百科)。

2.定位出錯的原因

我們能夠進(jìn)行導(dǎo)航就是因為在我們頭頂上的這21顆 gps 的工作衛(wèi)星。并且GPS 的導(dǎo)航其實是基于這些衛(wèi)星信號進(jìn)行的,如果信號在傳輸?shù)倪^程中受損或者中斷,就會導(dǎo)致定位不準(zhǔn)的問題。因此在高樓林立的地方 GPS 定位就比較差,在空曠的地方定位就比較準(zhǔn)確。

3.修正誤差

現(xiàn)在我們進(jìn)行定位的時候,不僅僅是只用 GPS 進(jìn)行定位,而是混合定位。就是 GPS、WiFi、蜂窩網(wǎng)絡(luò)一起進(jìn)行的定位服務(wù)。通過 WiFi 和蜂窩網(wǎng)絡(luò)可以減少 GPS 定位存在的誤差。

3.結(jié)束

最近在做 POI的搜索和基于高德地圖的定位服務(wù),踩了很多的坑,對 GPS的定位有了一些新的認(rèn)識。希望能和大家分享

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容