{"id":1121,"date":"2018-08-08T14:56:06","date_gmt":"2018-08-08T06:56:06","guid":{"rendered":"http:\/\/www.luwl.net\/?p=1121"},"modified":"2018-08-08T14:56:29","modified_gmt":"2018-08-08T06:56:29","slug":"%e5%9d%90%e6%a0%87%e8%bd%ac%e6%8d%a2","status":"publish","type":"post","link":"http:\/\/www.luwl.net\/?p=1121","title":{"rendered":"GPS\u5750\u6807\u8f6c\u6362"},"content":{"rendered":"<p>js\u4ee3\u7801<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n\r\n\/**\r\n* Created by Wandergis on 2015\/7\/8.\r\n* \u63d0\u4f9b\u4e86\u767e\u5ea6\u5750\u6807\uff08BD09\uff09\u3001\u56fd\u6d4b\u5c40\u5750\u6807\uff08\u706b\u661f\u5750\u6807\uff0cGCJ02\uff09\u3001\u548cWGS84\u5750\u6807\u7cfb\u4e4b\u95f4\u7684\u8f6c\u6362\r\n* var gcj02towgs84 = coordtransform.gcj02towgs84(position.lng, position.lat);\r\n*\/\r\n\/\/UMD\u9b54\u6cd5\u4ee3\u7801\r\n\/\/ if the module has no dependencies, the above pattern can be simplified to\r\n(function (root, factory) {\r\nif (typeof define === 'function' &amp;&amp; define.amd) {\r\n\/\/ AMD. Register as an anonymous module.\r\ndefine(&#x5B;], factory);\r\n} else if (typeof module === 'object' &amp;&amp; module.exports) {\r\n\/\/ Node. Does not work with strict CommonJS, but\r\n\/\/ only CommonJS-like environments that support module.exports,\r\n\/\/ like Node.\r\nmodule.exports = factory();\r\n} else {\r\n\/\/ Browser globals (root is window)\r\nroot.coordtransform = factory();\r\n}\r\n}(this, function () {\r\n\/\/\u5b9a\u4e49\u4e00\u4e9b\u5e38\u91cf\r\nvar x_PI = 3.14159265358979324 * 3000.0 \/ 180.0;\r\nvar PI = 3.1415926535897932384626;\r\nvar a = 6378245.0;\r\nvar ee = 0.00669342162296594323;\r\n\/**\r\n* \u767e\u5ea6\u5750\u6807\u7cfb (BD-09) \u4e0e \u706b\u661f\u5750\u6807\u7cfb (GCJ-02)\u7684\u8f6c\u6362\r\n* \u5373 \u767e\u5ea6 \u8f6c \u8c37\u6b4c\u3001\u9ad8\u5fb7\r\n* @param bd_lon\r\n* @param bd_lat\r\n* @returns {*&#x5B;]}\r\n*\/\r\nvar bd09togcj02 = function bd09togcj02(bd_lon, bd_lat) {\r\nvar bd_lon = +bd_lon;\r\nvar bd_lat = +bd_lat;\r\nvar x = bd_lon - 0.0065;\r\nvar y = bd_lat - 0.006;\r\nvar z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_PI);\r\nvar theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_PI);\r\nvar gg_lng = z * Math.cos(theta);\r\nvar gg_lat = z * Math.sin(theta);\r\nreturn &#x5B;gg_lng, gg_lat]\r\n};\r\n\r\n\/**\r\n* \u706b\u661f\u5750\u6807\u7cfb (GCJ-02) \u4e0e\u767e\u5ea6\u5750\u6807\u7cfb (BD-09) \u7684\u8f6c\u6362\r\n* \u5373\u8c37\u6b4c\u3001\u9ad8\u5fb7 \u8f6c \u767e\u5ea6\r\n* @param lng\r\n* @param lat\r\n* @returns {*&#x5B;]}\r\n*\/\r\nvar gcj02tobd09 = function gcj02tobd09(lng, lat) {\r\nvar lat = +lat;\r\nvar lng = +lng;\r\nvar z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * x_PI);\r\nvar theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI);\r\nvar bd_lng = z * Math.cos(theta) + 0.0065;\r\nvar bd_lat = z * Math.sin(theta) + 0.006;\r\nreturn &#x5B;bd_lng, bd_lat]\r\n};\r\n\r\n\/**\r\n* WGS84\u8f6cGCj02\r\n* @param lng\r\n* @param lat\r\n* @returns {*&#x5B;]}\r\n*\/\r\nvar wgs84togcj02 = function wgs84togcj02(lng, lat) {\r\nvar lat = +lat;\r\nvar lng = +lng;\r\nif (out_of_china(lng, lat)) {\r\nreturn &#x5B;lng, lat]\r\n} else {\r\nvar dlat = transformlat(lng - 105.0, lat - 35.0);\r\nvar dlng = transformlng(lng - 105.0, lat - 35.0);\r\nvar radlat = lat \/ 180.0 * PI;\r\nvar magic = Math.sin(radlat);\r\nmagic = 1 - ee * magic * magic;\r\nvar sqrtmagic = Math.sqrt(magic);\r\ndlat = (dlat * 180.0) \/ ((a * (1 - ee)) \/ (magic * sqrtmagic) * PI);\r\ndlng = (dlng * 180.0) \/ (a \/ sqrtmagic * Math.cos(radlat) * PI);\r\nvar mglat = lat + dlat;\r\nvar mglng = lng + dlng;\r\nreturn &#x5B;mglng, mglat]\r\n}\r\n};\r\n\r\n\/**\r\n* GCJ02 \u8f6c\u6362\u4e3a WGS84\r\n* @param lng\r\n* @param lat\r\n* @returns {*&#x5B;]}\r\n*\/\r\nvar gcj02towgs84 = function gcj02towgs84(lng, lat) {\r\nvar lat = +lat;\r\nvar lng = +lng;\r\nif (out_of_china(lng, lat)) {\r\nreturn &#x5B;lng, lat]\r\n} else {\r\nvar dlat = transformlat(lng - 105.0, lat - 35.0);\r\nvar dlng = transformlng(lng - 105.0, lat - 35.0);\r\nvar radlat = lat \/ 180.0 * PI;\r\nvar magic = Math.sin(radlat);\r\nmagic = 1 - ee * magic * magic;\r\nvar sqrtmagic = Math.sqrt(magic);\r\ndlat = (dlat * 180.0) \/ ((a * (1 - ee)) \/ (magic * sqrtmagic) * PI);\r\ndlng = (dlng * 180.0) \/ (a \/ sqrtmagic * Math.cos(radlat) * PI);\r\nvar mglat = lat + dlat;\r\nvar mglng = lng + dlng;\r\nreturn &#x5B;lng * 2 - mglng, lat * 2 - mglat]\r\n}\r\n};\r\n\r\nvar transformlat = function transformlat(lng, lat) {\r\nvar lat = +lat;\r\nvar lng = +lng;\r\nvar ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng));\r\nret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 \/ 3.0;\r\nret += (20.0 * Math.sin(lat * PI) + 40.0 * Math.sin(lat \/ 3.0 * PI)) * 2.0 \/ 3.0;\r\nret += (160.0 * Math.sin(lat \/ 12.0 * PI) + 320 * Math.sin(lat * PI \/ 30.0)) * 2.0 \/ 3.0;\r\nreturn ret\r\n};\r\n\r\nvar transformlng = function transformlng(lng, lat) {\r\nvar lat = +lat;\r\nvar lng = +lng;\r\nvar ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng));\r\nret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 \/ 3.0;\r\nret += (20.0 * Math.sin(lng * PI) + 40.0 * Math.sin(lng \/ 3.0 * PI)) * 2.0 \/ 3.0;\r\nret += (150.0 * Math.sin(lng \/ 12.0 * PI) + 300.0 * Math.sin(lng \/ 30.0 * PI)) * 2.0 \/ 3.0;\r\nreturn ret\r\n};\r\n\r\n\/**\r\n* \u5224\u65ad\u662f\u5426\u5728\u56fd\u5185\uff0c\u4e0d\u5728\u56fd\u5185\u5219\u4e0d\u505a\u504f\u79fb\r\n* @param lng\r\n* @param lat\r\n* @returns {boolean}\r\n*\/\r\nvar out_of_china = function out_of_china(lng, lat) {\r\nvar lat = +lat;\r\nvar lng = +lng;\r\n\/\/ \u7eac\u5ea63.86~53.55,\u7ecf\u5ea673.66~135.05\r\nreturn !(lng &gt; 73.66 &amp;&amp; lng &lt; 135.05 &amp;&amp; lat &gt; 3.86 &amp;&amp; lat &lt; 53.55);\r\n};\r\n\r\nreturn {\r\nbd09togcj02: bd09togcj02,\r\ngcj02tobd09: gcj02tobd09,\r\nwgs84togcj02: wgs84togcj02,\r\ngcj02towgs84: gcj02towgs84\r\n}\r\n}));\r\n\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>js\u4ee3\u7801 \/** * Created by Wandergis on 2015\/ &hellip; <a href=\"http:\/\/www.luwl.net\/?p=1121\">\u7ee7\u7eed\u9605\u8bfb <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1121","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/www.luwl.net\/index.php?rest_route=\/wp\/v2\/posts\/1121","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.luwl.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.luwl.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.luwl.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.luwl.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1121"}],"version-history":[{"count":2,"href":"http:\/\/www.luwl.net\/index.php?rest_route=\/wp\/v2\/posts\/1121\/revisions"}],"predecessor-version":[{"id":1123,"href":"http:\/\/www.luwl.net\/index.php?rest_route=\/wp\/v2\/posts\/1121\/revisions\/1123"}],"wp:attachment":[{"href":"http:\/\/www.luwl.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1121"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.luwl.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1121"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.luwl.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1121"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}