今天公司要加個添加行程軌跡的需求,同時需要加上Gps信號弱的時候,比如跑到山區或者無人區的時候需要添加GPS處理,網上找了壹些辦法,都是關於弱網和飛行模式下的處理,或者用高德sdk的軌跡糾偏,沒有關於GPS信號弱的判斷,就自己寫了壹個方法,供參考,當我們使用高德地圖的時候,更新位置壹般會調用(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation委托代理方發,此時我們可以根據MKUserLocation的location屬性,根據location屬性的horizontalAccuracy來判斷GPS信號強弱,horizontalAccuracy的單位為米,代表GPS信號的精確度,越低表示定位越準確,需要註意的是當為負數,表示沒有GPs信號。所以可以根據這個屬性來判斷GPS的信號強度。
根據打印出的信號強度,正常gps信號都在18,20多,在室內的話,壹般大於100多的時候,表示定位不太準確了,室外運動的時候,我把它定位143,因為產品特意跑到隧道裏測的?♂?。希望對大家有幫助
- (NSInteger)judgeGpsSingal:(CLLocation*)userLocation
{
if (userLocation.horizontalAccuracy<0)
{
// 沒有Gps信號
return ? -1;
}
else if (userLocation.horizontalAccuracy>143)
{
// GPs信號弱
return? 0;
}
else? if (someLocation.horizontalAccuracy>48)
{
// Gps信號壹般
return ? 1;
}
else
{
// GPS信號強
return 2;
}
}