今天公司要加个添加行程轨迹的需求,同时需要加上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;
}
elseif(userLocation.horizontalAccuracy>143)
{
// GPs信号弱
return 0;
}
else if(someLocation.horizontalAccuracy>48)
{
// Gps信号一般
return 1;
}
else
{
// GPS信号强
return2;
}
}