iOS系统定位不准解决方案

前言

使用iOS 默认定位,经测试发现,与实际距离偏差了1000多米。从网上找到了解决方案,经测试定位基本准确。误差在几米吧。

正文

首先科普一波:
  • 国际共识:WGS84的坐标系统,以经纬度的形式来表示地球平面上的某一个位置;

  • 中国:GCJ-02的坐标系统。在我国,出于国家安全考虑,国内所有导航电子地图必须使用国家测绘局制定的加密坐标系统,即将一个真实的经纬度坐标加密成一个不正确的经纬度坐标,称之为火星坐标;

  • 百度:BD-09的坐标系统,百度坐标是在国测局制定的GCJ-02,对地理位置进行首次加密的基础上,进行了BD-09二次加密措施,更加保护了个人隐私。

我们的业务场景描述:

app获取到当前坐标----js交互--->传给前端---->前端通过百度地图展示

问题描述:

app采用了系统自带定位,但是发现最后展示位置与实际偏差1000多米,心中满是怀疑

解决方案:使用JZLocationConverter进行转化下就好了
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    [NSObject cancelPreviousPerformRequestsWithTarget:self];
    CLLocation *location = [locations firstObject];
    NSLog(@"%@", location);
    
    CLLocationCoordinate2D gcj02 =            CLLocationCoordinate2DMake(location.coordinate.latitude,location.coordinate.longitude);

    //国际标准的坐标系统WGS-84坐标系统转为GCJ-02(火星坐标)
//JZLocationConverter 下载地址https://github.com/JackZhouCn/JZLocationConverter
    CLLocationCoordinate2D bdd = [JZLocationConverter wgs84ToBd09:gcj02];
    CLLocation *loc = [[CLLocation alloc] initWithLatitude:bdd.latitude longitude:bdd.longitude];
    //loc现在就准确了,可以进行使用了
}

结束语

相识,你含羞带笑
相知,你无理胡闹
相忘,你魂牵梦绕

最后献上一波大家也许还不知道的定位福利

你可能感兴趣的:(iOS系统定位不准解决方案)