目前市面上比较常见的互联网地图的坐标系主要有这样几种:GCJ-02、BD-09、WGS84、CGCS2000。WGS84,原始坐标体系。主要有Google Earth在用,。GCJ-02是由国测局制定的互联网地图坐标系,又叫火星坐标,最常见的互联网地图坐标系,在中国能见到的互联网
地图基本都是这种坐标了,比如高德地图、腾讯地图、百度地图、Google地图(中国范围)。BD-09是百度地图独有的坐标系,是在GCJ-02的基础之上进行二次加密的地图坐标,比GCJ-02坐标偏了几百米
的样子。CGCS2000是国家2000坐标系,是一个地心坐标系,目前的话应该就只有天地图在用了,所以目前的互联网地图就
只有天地图使用的是真实坐标,其他都是使用的加密坐标。CGCS2000、WGS84都是地心坐标系,地心与参心不同,参心坐标系是以参考椭球为基准建立的坐标系,不同的国
家有着自己的参考椭球标准,所以会存在一些差异性,而地心坐标系是以地球的质量中心为基准建立的坐标系统,
所以,2000与84基本是重合的,只有高程基准面会存在差异,天地图的定位API就是直接读取的手机GPS坐标,不
加密直接显示到地图上。
//地球坐标系转火星坐标系方法
const double a = 6378245.0;
const double ee = 0.00669342162296594323;  + (CLLocation *)transformToMars:(CLLocation *)location {  //是否在中国大陆之外  if ([[self class] outOfChina:location]) {  return location;  }  double dLat = [[self class] transformLatWithX:location.coordinate.longitude - 105.0 y:location.coordinate.latitude - 35.0];  double dLon = [[self class] transformLonWithX:location.coordinate.longitude - 105.0 y:location.coordinate.latitude - 35.0];  double radLat = location.coordinate.latitude / 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);  return [[CLLocation alloc] initWithLatitude:location.coordinate.latitude + dLat longitude:location.coordinate.longitude + dLon];
}  + (BOOL)outOfChina:(CLLocation *)location {  if (location.coordinate.longitude < 72.004 || location.coordinate.longitude > 137.8347) {  return YES;  }  if (location.coordinate.latitude < 0.8293 || location.coordinate.latitude > 55.8271) {  return YES;  }  return NO;
}  + (double)transformLatWithX:(double)x y:(double)y {  double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * sqrt(abs(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.0 * sin(y * M_PI / 30.0)) * 2.0 / 3.0;  return ret;
}  + (double)transformLonWithX:(double)x y:(double)y {  double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * sqrt(abs(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;
}  
// GCJ-02 坐标转换成 BD-09 坐标
+ (CLLocationCoordinate2D)MarsGS2BaiduGS:(CLLocationCoordinate2D)coordinate
{  double x_pi = PI * 3000.0 / 180.0;  double x = coordinate.longitude, y = coordinate.latitude;  double z = sqrt(x * x + y * y) + 0.00002 * sin(y * x_pi);  double theta = atan2(y, x) + 0.000003 * cos(x * x_pi);  double bd_lon = z * cos(theta) + 0.0065;  double bd_lat = z * sin(theta) + 0.006;  return CLLocationCoordinate2DMake(bd_lat, bd_lon);
}  // BD-09 坐标转换成 GCJ-02 坐标
+ (CLLocationCoordinate2D)BaiduGS2MarsGS:(CLLocationCoordinate2D)coordinate
{  double x_pi = PI * 3000.0 / 180.0;  double x = coordinate.longitude - 0.0065, y = coordinate.latitude - 0.006;  double z = sqrt(x * x + y * y) - 0.00002 * sin(y * x_pi);  double theta = atan2(y, x) - 0.000003 * cos(x * x_pi);  double gg_lon = z * cos(theta);  double gg_lat = z * sin(theta);  return CLLocationCoordinate2DMake(gg_lat, gg_lon);
}  
// WGS-84 坐标转换成 BD-09 坐标
+ (CLLocationCoordinate2D)WorldGS2BaiduGS:(CLLocationCoordinate2D)coordinate
{  CLLocationCoordinate2D mars = [ALDGeocoder WorldGS2MarsGS:coordinate];  CLLocationCoordinate2D baidu = [ALDGeocoder MarsGS2BaiduGS:mars];  return baidu;
}  // BD-09 坐标转换成 WGS-84 坐标
+ (CLLocationCoordinate2D)BaiduGS2WorldGS:(CLLocationCoordinate2D)coordinate
{  CLLocationCoordinate2D mars = [ALDGeocoder BaiduGS2MarsGS:coordinate];  CLLocationCoordinate2D world = [ALDGeocoder MarsGS2WorldGS:mars];  return world;
}
// WGS-84 坐标转换成 Sogou 坐标
+ (CLLocationCoordinate2D)WorldGS2SogouGS:(CLLocationCoordinate2D)coordinate
{  const double ee = 0.082271854224939184;  double lon = coordinate.longitude;  double lat = coordinate.latitude;  double dlon = [ALDGeocoder rad:CLIP(lon, -360, 360)];  double dlat = [ALDGeocoder rad:CLIP(lat, -90, 90)];  dlon = 6378206.4 * dlon;  double sinphi = sin(dlat);  double temp1, temp2;  if((temp1 = 1.0 + sinphi) == 0.0){  dlat = -1000000000;  }else if((temp2 = 1.0 - sinphi) == 0.0){  dlat = 1000000000;  }else{  double esinphi = ee * sinphi;  dlat = 3189103.2000000002 * log((temp1 / temp2) * pow((1.0 - esinphi) / (1.0 + esinphi), ee));  }  return CLLocationCoordinate2DMake(dlat, dlon);
}  // Sogou 坐标转换成 WGS-84 坐标
+ (CLLocationCoordinate2D)SogouGS2WorldGS:(CLLocationCoordinate2D)coordinate
{  const double ee = 1.5707963267948966;  const double aa = 0.0033938814110493522;  double lon = coordinate.longitude;  double lat = coordinate.latitude;  double dlon = lon / 6378206.4;  double temp = -lat / 6378206.4;  double chi;  if(temp < -307){  chi = ee;  }else if(temp > 308){  chi = -ee;  }else{  chi = ee - 2 * atan(exp(temp));  }  double chi2 = 2 * chi;  double coschi2 = cos(chi2);  double dlat = chi + sin(chi2) * (aa + coschi2 * (1.3437644537757259E-005 + coschi2 * (7.2964865099246009E-008 + coschi2 * 4.4551470401894685E-010)));  double rlon = CLIP([ALDGeocoder deg:dlon], -360, 360);  double rlat = CLIP([ALDGeocoder deg:dlat], -90, 90);  return CLLocationCoordinate2DMake(rlat, rlon);
}  
//WGS-84 坐标转换成 墨卡托 坐标
+ (CLLocationCoordinate2D)WorldGS2Mercator:(CLLocationCoordinate2D)coordinate
{  double lon = coordinate.longitude*20037508.34/180;  double lat = log(tan((90+coordinate.latitude)*M_PI/360))/(M_PI/180);  lat = lat*20037508.34/180;  return CLLocationCoordinate2DMake(lat, lon);
}  //墨卡托 坐标转换成 WGS-84 坐标
+ (CLLocationCoordinate2D)Mercator2WorldGS:(CLLocationCoordinate2D)mercator
{  double lon = mercator.longitude/20037508.34*180;  double lat = mercator.latitude/20037508.34*180;  lat = 180/M_PI*(2*atan(exp(lat*M_PI/180))-M_PI/2);  return CLLocationCoordinate2DMake(lat, lon);
}  

关于高德百度地图坐标系问题相关推荐

  1. android 高德卫星地图数据,白马地图 Bmap for Android v7.3.81 强大高德百度地图应用|张小北...

    Bmap for Android 是一款集成高德地图百度地图为一体的第三方地图应用APP,Bmap for Android 又叫白马地图,采用高德/百度地图数据引擎,可任意切换百度地图.高德地图数据源 ...

  2. 高德地图——浏览器定位+点击获取经纬度+去除高德百度地图左下角logo

    高德地图--浏览器定位+点击获取经纬度+去除高德百度地图左下角logo 1.代码 <!doctype html> <html> <head><meta cha ...

  3. react-native原生GPS与高德地图坐标,百度地图坐标系的转换

    问题 今天用react-native原生GPS拿到得定位信息,如图: 之前高德地图取到的定位数据为(显示带有longtitude,latitude===的log)准确的 121.518828125,3 ...

  4. 天气 经纬度 高德_天地图与高德 百度地图的经纬度转换

    https://lbs.amap.com/api/javascript-api/guide/transform/convertfrom http://m.gpsspg.com/maps.htm 1.首 ...

  5. 【批量地点检索-高德百度地图地理编码对比】

    批量地点检索 基于python地理位置描述转经纬度坐标 前提: 需要安装部署python环境 安装导入模块: import requests import json import math 发送请求 ...

  6. 百度地图坐标系相关学习总结

    百度地图API详解之地图坐标系统 我们都知道地球是圆的,电脑显示器是平的,要想让位于球面的形状显示在平面的显示器上就必然需要 一个转换过程,这个过程就叫做投影(Projection).在地球上我们通过 ...

  7. vue2.0 唤起百度地图app_开车选高德,出门靠百度,高德百度地图APP对比

    高德和百度是在电子地图领域竞争的对手,但是,在同一领域他们的发展方向的侧重也存在差异.那么,他们究竟有什么不同呢?当然,他们的开发人员必须是不同的,肯定不用考虑.此外,在某些数据和功能上,它们也是不同 ...

  8. 高德百度地图如何获取附近小区酒店银行等?

    概述 实现以下功能:根据当前定位,查找附近小区 实现步骤 高德,百度地图实现方式相同,步骤都是如下: 1.获取当前位置的经纬度 2.查询poitype编码. (小区,写字楼,银行,酒店等等每个类别都有 ...

  9. 高德(百度)地图驾车路线规划和清除

    高德地图: 带途径点的路径规划: var markerList=[{lng:116.379028,lat:39.865042},{lng:116.379028,lat:39.885042, },{ln ...

  10. 使用高德(百度)地图API

    以高德地图为例: 高德地图API官网申请key; 在index.html中引入: 如果是Vue-cli2,在build/webpack.base.conf.js中的module.exports={}中 ...

最新文章

  1. Py之glob: glob库文件名模式匹配+返回所有匹配的文件路径列表库的简介、使用方法之详细攻略
  2. Tomcat 下构建 Web 应用时,常犯的一些通用错误
  3. CoreAnimation —— CAReplicatorLayer(拷贝图层)
  4. dotNET Core实现分布式环境下的流水号唯一
  5. Spring Boot Actuator监控关闭
  6. div 位于屏幕正中间_折叠屏已经不新鲜了,明天你可能会用上“伸缩屏幕”!...
  7. 【转载】Kali-linux安装之后的简单设置
  8. RDIFramework.NET(.NET快速信息化系统开发框架) Web版介绍
  9. Java从入门到精通 第12章 类的封装、继承与多态
  10. 190706每日一句
  11. 如何安装VS2011Beta版
  12. Input Director使用一个键盘和鼠标即可控制多台Windows计算机
  13. 大学心理学课本_大学心理学的教材依次(全部)都有哪些?
  14. python基础之语句_python基础之条件语句
  15. 和讯博客知名博主《猎杀黑马》作者王宁签售会圆满结束
  16. 怎么把电脑上的python软件卸载干净_怎么把一个软件卸载干净 把一个软件卸载干净的两种方法...
  17. STM32片上Flash读写的一些重要知识
  18. 迪杰斯特拉(Dijkstra)算法之两点之间的最短距离问题
  19. mysql数据库编程题题_mysql数据库编程题测试
  20. HTML 四十六 HTML5 语义

热门文章

  1. 扇贝编程python骗局-原来用Python薅羊毛这么简单!后悔错过了那么多机会
  2. Python在线编程网站
  3. OPC 通讯 Demo
  4. delphi 2010 mysql_Delphi 2010和MySQL
  5. 2017电子设计大赛论文:滚球控制系统
  6. Codejock.Xtreme.Toolkit.Pro.v15.3.1 for MFC 15种皮肤切换
  7. CCNA学习指南-----1-3章笔记
  8. 心语家园系统维护工具箱v1.0
  9. 【中文信息处理】实验一_语料库统计_基于词表的分词
  10. font-family 各字体一览表