一、调用例子:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>coordTransform</title>
</head>
<body>
<h1>请按F12打开控制台查看结果</h1>
<script src="coordtransform.js"></script>
<script>//国测局坐标(火星坐标,比如高德地图在用),百度坐标,wgs84坐标(谷歌国外以及绝大部分国外在线地图使用的坐标)//百度经纬度坐标转国测局坐标var bd09togcj02 = coordtransform.bd09togcj02(116.404, 39.915);
//国测局坐标转百度经纬度坐标
var gcj02tobd09 = coordtransform.gcj02tobd09(116.404, 39.915);
//wgs84转国测局坐标
var wgs84togcj02 = coordtransform.wgs84togcj02(116.404, 39.915);
//国测局坐标转wgs84坐标
var gcj02towgs84 = coordtransform.gcj02towgs84(116.404, 39.915);
console.log(bd09togcj02);
console.log(gcj02tobd09);
console.log(wgs84togcj02);
console.log(gcj02towgs84);
//result
//bd09togcj02:   [ 116.39762729119315, 39.90865673957631 ]
//gcj02tobd09:   [ 116.41036949371029, 39.92133699351021 ]
//wgs84togcj02:  [ 116.41024449916938, 39.91640428150164 ]
//gcj02towgs84:  [ 116.39775550083061, 39.91359571849836 ]
</script>
</body>
</html>

二、相关函数

coordtransform.js

/*** Created by Wandergis on 2015/7/8.* 提供了百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换* coordtransform.js*/
//UMD魔法代码
// if the module has no dependencies, the above pattern can be simplified to
(function (root, factory) {if (typeof define === 'function' && define.amd) {// AMD. Register as an anonymous module.define([], factory);} else if (typeof module === 'object' && module.exports) {// Node. Does not work with strict CommonJS, but// only CommonJS-like environments that support module.exports,// like Node.module.exports = factory();} else {// Browser globals (root is window)root.coordtransform = factory();}
}(this, function () {//定义一些常量var x_PI = 3.14159265358979324 * 3000.0 / 180.0;var PI = 3.1415926535897932384626;var a = 6378245.0;var ee = 0.00669342162296594323;/*** 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换* 即 百度 转 谷歌、高德* @param bd_lon* @param bd_lat* @returns {*[]}*/var bd09togcj02 = function bd09togcj02(bd_lon, bd_lat) {var bd_lon = +bd_lon;var bd_lat = +bd_lat;var x = bd_lon - 0.0065;var y = bd_lat - 0.006;var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_PI);var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_PI);var gg_lng = z * Math.cos(theta);var gg_lat = z * Math.sin(theta);return [gg_lng, gg_lat]};/*** 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换* 即谷歌、高德 转 百度* @param lng* @param lat* @returns {*[]}*/var gcj02tobd09 = function gcj02tobd09(lng, lat) {var lat = +lat;var lng = +lng;var z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * x_PI);var theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI);var bd_lng = z * Math.cos(theta) + 0.0065;var bd_lat = z * Math.sin(theta) + 0.006;return [bd_lng, bd_lat]};/*** WGS84转GCj02* @param lng* @param lat* @returns {*[]}*/var wgs84togcj02 = function wgs84togcj02(lng, lat) {var lat = +lat;var lng = +lng;if (out_of_china(lng, lat)) {return [lng, lat]} else {var dlat = transformlat(lng - 105.0, lat - 35.0);var dlng = transformlng(lng - 105.0, lat - 35.0);var radlat = lat / 180.0 * PI;var magic = Math.sin(radlat);magic = 1 - ee * magic * magic;var sqrtmagic = Math.sqrt(magic);dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI);dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI);var mglat = lat + dlat;var mglng = lng + dlng;return [mglng, mglat]}};/*** GCJ02 转换为 WGS84* @param lng* @param lat* @returns {*[]}*/var gcj02towgs84 = function gcj02towgs84(lng, lat) {var lat = +lat;var lng = +lng;if (out_of_china(lng, lat)) {return [lng, lat]} else {var dlat = transformlat(lng - 105.0, lat - 35.0);var dlng = transformlng(lng - 105.0, lat - 35.0);var radlat = lat / 180.0 * PI;var magic = Math.sin(radlat);magic = 1 - ee * magic * magic;var sqrtmagic = Math.sqrt(magic);dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI);dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI);var mglat = lat + dlat;var mglng = lng + dlng;return [lng * 2 - mglng, lat * 2 - mglat]}};var transformlat = function transformlat(lng, lat) {var lat = +lat;var lng = +lng;var ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng));ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;ret += (20.0 * Math.sin(lat * PI) + 40.0 * Math.sin(lat / 3.0 * PI)) * 2.0 / 3.0;ret += (160.0 * Math.sin(lat / 12.0 * PI) + 320 * Math.sin(lat * PI / 30.0)) * 2.0 / 3.0;return ret};var transformlng = function transformlng(lng, lat) {var lat = +lat;var lng = +lng;var ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng));ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;ret += (20.0 * Math.sin(lng * PI) + 40.0 * Math.sin(lng / 3.0 * PI)) * 2.0 / 3.0;ret += (150.0 * Math.sin(lng / 12.0 * PI) + 300.0 * Math.sin(lng / 30.0 * PI)) * 2.0 / 3.0;return ret};/*** 判断是否在国内,不在国内则不做偏移* @param lng* @param lat* @returns {boolean}*/var out_of_china = function out_of_china(lng, lat) {var lat = +lat;var lng = +lng;// 纬度3.86~53.55,经度73.66~135.05 return !(lng > 73.66 && lng < 135.05 && lat > 3.86 && lat < 53.55);};return {bd09togcj02: bd09togcj02,gcj02tobd09: gcj02tobd09,wgs84togcj02: wgs84togcj02,gcj02towgs84: gcj02towgs84}
}));

完!!!

js 百度、高德、谷歌、火星、wgs84(2000)地图坐标相互转换的JS实现相关推荐

  1. 高德地图、百度地图、腾讯地图坐标相互转换

    高德地图.百度地图.腾讯地图坐标相互转换 1.WGS-84原始坐标系,一般用国际GPS纪录仪记录下来的经纬度,通过GPS定位拿到的原始经纬度,Google和高德地图定位的的经纬度(国外)都是基于WGS ...

  2. 高德谷歌腾讯天地图地图瓦片url

    以下是各地图的瓦片地图地址,可以在QGIS中加载,也可以在openlayer或leaflet前端页面中加载. 腾讯.百度.高德,加上谷歌和天地图应该足够用了. 腾讯.高德是GCJ02坐标系,百度是BD ...

  3. 移动互联风口频现,百度高德谁已手握地图关键钥匙

    随着有车一族的增多,地图的重要性日益凸显,当前国内地图市场竞争已经变得越发激烈.近来,百度地图与高德地图皆在多个与地图.出行.LBS.生活等相关的领域谋篇布局.4月19日,百度地图公布国际化战略,宣布 ...

  4. python读取数据文件、并把里面的数据变成x的二维坐标_(数据科学学习手札60)用Python实现WGS84、火星坐标系、百度坐标系、web墨卡托四种坐标相互转换...

    importmathclassLngLatTransfer():def __init__(self): self.x_pi= 3.14159265358979324 * 3000.0 / 180.0s ...

  5. 百度、谷歌、雅虎网站地图提交地址

    Baidu地图提交地址 :http://www.baidu.com/search/url_submit.html Google地图提交地址:https://www.google.com/webmast ...

  6. python实现坐标系转换_(数据科学学习手札60)用Python实现WGS84、火星坐标系、百度坐标系、web墨卡托四种坐标相互转换...

    importmathclassLngLatTransfer():def __init__(self): self.x_pi= 3.14159265358979324 * 3000.0 / 180.0s ...

  7. JS实现坐标系转换(wgs84、bd09ll、gcj02)百度、GPS、高德、腾讯地图相互转换

    JS 实现地图坐标相互转换,采用百度地图API的 BMap.Convertor(),所以使用时需要引入百度地图 v3 / v2 API,转换精准,无偏移! GPS ( wgs84 )  转 百度(bd ...

  8. 离线地图开发--BigeMap(离线地图服务器构建,支持百度、谷歌、高德等地图)

    前言: 目前高德地图以及百度谷歌等地图对Web端离线功能支持不太友好(甚至没有离线地图功能),这致使我们在进行内网服务器使用的地图开发时非常的不便利,因此在进行离线地图开发时我们通常选择引入第三方地图 ...

  9. 百度、高德、腾讯、天地图、谷歌、必应等地图切图工具 MapCutter 3.7.1

    百度.高德.腾讯.天地图.谷歌.必应等自定义地图/图片叠加层/瓦片图/金字塔图地图切图高清切片生成工具 MapCutter(旧名MapTiler) ,定位便捷,支持超大地图,支持leaflet.map ...

  10. 使用osmdroid6.0.2加载谷歌、高德、天地图等瓦片地图

    研究了一星期多的Osmdroid6.0.2,深感这个开源的android地图包强大,因为使用其他瓦片涉及知识产权,请大家谨慎使用,本文只做研究测试. 新建GoogleTileSource类继承org. ...

最新文章

  1. binder-JAVA层机制
  2. Machine Learning week 3 quiz: programming assignment-Logistic Regression
  3. PetShop4,错误提示:System.Web.Security.SqlMembershipProvider”要求一个与架构版本“1”兼容的数据...
  4. 基于互联网大数据的管理创新
  5. 使用NSURLProtocol实现UIWebView的离线缓存的简单实现
  6. 算法 - 排序稳定性总结
  7. androidstudio带pom的上传到jcenter_输送机@网带输送机@304网带输送机@304不锈钢网带输送机@输送机网带厂家定制...
  8. 你见过哪些堪称绝妙的数学证明?
  9. 计网复习第三章part one
  10. java sqlite 密码保护_密码保护SQLite数据库 . 可能吗?
  11. linux环境变量中无cc,Linux环境变量
  12. stm32 W25QXX系列驱动 W25Q80 W25Q16 W25Q32 W25Q64 W25Q128 W25Q256
  13. Excel数据分析实例
  14. SECS/GEM协议开发系列(四)SECS/GEM基础知识
  15. python emf转gif_python – 将EMF / WMF文件转换为PNG / JPG
  16. 使用canvas压缩图片大小
  17. 淘宝动态评分绿了怎么办
  18. 远程重启h3c路由器_H3C路由器简单命令
  19. CentOS安装onlyoffice
  20. 机器视觉:工业相机专业词汇中英文详解

热门文章

  1. 电脑联网了但是浏览器代理服务器出现了问题
  2. 在2003服务器上预览时出现:您未被授权查看该页 您不具备使用所提供的凭据查看该目录或页的权限
  3. javascript Date format(js日期格式化)
  4. php写phalapi,PhalApi框架
  5. 程序员学习时间的由来
  6. 程序员必读书籍及部分图书导读指南
  7. ShowWindow函数
  8. 堆积木——GBQ4.0设置“统一设置安装费用”中的“高层建筑增加费”
  9. 互联网行业的众生相,不向命运低头的“英雄主义”
  10. SQL的DATEDIFF计算天数