1.高德地圖
1.1 MAMapView 在首次打開的時候無法正常的定位到當(dāng)前位置
- 問題:
在地圖初始化完成了以后,有時候會定位到北京,有時候會正常的定位本地。存在一定的幾率無法正常定位到當(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)識。希望能和大家分享