小啊小叮当 2017-12-01 02:20 采纳率: 0%
浏览 4268

苹果手机自带地图定位的坐标是什么格式,怎么和GoogleMap的坐标转换?

求大牛讲解一下,同事在收集资料时坐标是在苹果自带的地图上面长按获取的坐标,但是这个坐标的格
式有点奇怪例如:经度:113.5511,纬度22.2220;这个格式有点看不懂,想将GoogleMap(例如:22.219501,113.556201)获取到的坐标转换成对应的样子,不知道两者之间互转有什么公式,求大牛赐教

  • 写回答

1条回答 默认 最新

  • jyl_sh 2018-01-03 03:47
    关注

    GPS以及iOS系统定位获得的坐标是地理坐标系WGS1984,Web地图一般用的坐标细是投影坐标系WGS 1984 Web Mercator,国内出于相关法律法规要求,对国内所有GPS设备及地图数据都进行了加密偏移处理,代号GCJ-02,这样GPS定位获得的坐标与地图上的位置刚好对应上,特殊的是百度地图在这基础上又进行一次偏移,所以在处理系统定位坐标及相关地图SDK坐标时需要转换处理下,根据网络资源,目前有一些公开的转换算法。
    系统定位坐标显示在原生地图、谷歌地图或高德地图–WGS1984转GCJ-02
    苹果地图及谷歌地图用的都是高德地图的数据,所以这三种情况坐标处理方法一样,即将WGS1984坐标转换成偏移后的GCJ-02才可以在地图上正确显示位置。
    通过这个工具类可将iOS原生地图获取的坐标点转换为地图上正确表示的真实坐标点:
    .h
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
      //
    //  GPSLocationTool.h
    //  Zar
    //
    //  Created by carayfire-Develop on 16/6/8.
    //  Copyright ? 2016年 Crazyfire technology development Co. Ltd. All rights reserved.
    //
     
    #import
    #import
     
    @interface GPSLocationTool : NSObject
    /**
     *  public:原生地图获取坐标转化为真实坐标
     *
     *  @param latLng 原生坐标点
     *
     *  @return 真实坐标点
     */

    • (CLLocationCoordinate2D)transform:(CLLocationCoordinate2D)latLng; @end .m ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 // //  GPSLocationTool.m //  Zar // //  Created by carayfire-Develop on 16/6/8. //  Copyright ? 2016年 Crazyfire technology development Co. Ltd. All rights reserved. //   #import "GPSLocationTool.h" #import   @implementation GPSLocationTool   const double a = 6378245.0; const double ee = 0.00669342162296594323;   /**  *  public:原生地图获取坐标转化为真实坐标  *  *  @param latLng 原生坐标点  *  *  @return 真实坐标点  */
    • (CLLocationCoordinate2D)transform:(CLLocationCoordinate2D) latLng {     double wgLat = latLng.latitude;     double wgLon = latLng.longitude;     double mgLat;     double mgLon;       if ([self outOfChina:wgLat :wgLon ])     {         return latLng;     }     double dLat = [self transformLat:wgLon-105.0 :wgLat - 35 ];     double dLon = [self transformLon:wgLon-105.0 :wgLat - 35 ];       double radLat = wgLat / 180.0 * M_PI;     double magic = sin(radLat);     magic = 1 - ee * magic * magic;     double sqrtMagic = sqrt(magic);     dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * M_PI);     dLon = (dLon * 180.0) / (a / sqrtMagic * cos(radLat) * M_PI);     mgLat = wgLat + dLat;     mgLon = wgLon + dLon;     CLLocationCoordinate2D loc2D ;     loc2D.latitude = mgLat;     loc2D.longitude = mgLon;       return loc2D; }   #pragma mark private
    • (BOOL) outOfChina:(double) lat :(double) lon {     if (lon < 72.004 || lon > 137.8347) {         return true;     }     if (lat < 0.8293 || lat > 55.8271) {         return true;     }     return false; }  
    • (double) transformLat:(double)x  :(double) y {     double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y +     0.2 * sqrt(fabs(x));     ret += (20.0 * sin(6.0 * x * M_PI) + 20.0 *sin(2.0 * x *M_PI)) * 2.0 /     3.0;     ret += (20.0 * sin(y * M_PI) + 40.0 *sin(y / 3.0 *M_PI)) * 2.0 / 3.0;     ret += (160.0 * sin(y / 12.0 * M_PI) + 320 *sin(y * M_PI / 30.0)) * 2.0 /     3.0;     return ret; }  
    • (double) transformLon:(double) x :(double) y {     double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * sqrt(fabs(x));     ret += (20.0 * sin(6.0 * x * M_PI) + 20.0 * sin(2.0 * x * M_PI)) * 2.0 /     3.0;     ret += (20.0 * sin(x * M_PI) + 40.0 * sin(x / 3.0 * M_PI)) * 2.0 / 3.0;     ret += (150.0 * sin(x / 12.0 *M_PI) + 300.0 *sin(x / 30.0 * M_PI)) * 2.0 /     3.0;     return ret; }   @end
    评论

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大