wx.getLocation({ type: 'wgs84', success (res) { const latitude = res.latitude const longitude = res.longitude const speed = res.speed const accuracy = res.accuracy } })
wgs84 返回 gps 座標,gcj02 返回可用於 wx.openLocation 的座標ios
wx.getLocation({ type: 'gcj02', //返回能夠用於wx.openLocation的經緯度 success (res) { const latitude = res.latitude const longitude = res.longitude wx.openLocation({ latitude, longitude, scale: 18 }) } })
wgs84是全球定位系統獲取的座標,gcj02是國家測繪局給出的座標。
gcj02火星座標系,國測局02年發佈的座標體系,它是一種對經緯度數據的加密算法,即加入隨機的誤差。高德、騰訊、Google中國地圖使用。國內最普遍使用的座標體系。
高德地圖、騰訊地圖以及谷歌中國區地圖使用的是GCJ-02座標系。
百度地圖使用的是BD-09座標系。
底層接口(HTML5 Geolocation或ios、安卓API)經過GPS設備獲取的座標使用的是WGS-84座標系。git
經度0°——180°(東行,標註E)0°——180°(西行,標註W) 緯度0°——90°N、0°——90°S。
潤園北門
騰訊地圖座標,118.284618,33.920469。(LNG,LAT)
高德地圖座標,118.284614,33.920445。(LNG,LAT)
百度地圖座標,118.291152,33.926284。(LNG,LAT)算法
在線轉換,http://www.gpsspg.com/maps.htmide
經緯度轉化,百度轉騰訊高德。加密
/** * 中國正常GCJ02座標---->百度地圖BD09座標 * 騰訊地圖用的也是GCJ02座標 * @param double $lng 經度 * @param double $lat 緯度 * @return array */ public static function Convert_GCJ02_To_BD09($lng, $lat) { $x_pi = 3.14159265358979324 * 3000.0 / 180.0; $x = $lng; $y = $lat; $z = sqrt($x * $x + $y * $y) + 0.00002 * sin($y * $x_pi); $theta = atan2($y, $x) + 0.000003 * cos($x * $x_pi); $lng = $z * cos($theta) + 0.0065; $lat = $z * sin($theta) + 0.006; return array('lng' => $lng, 'lat' => $lat); } /** * 百度地圖BD09座標---->中國正常GCJ02座標 * 騰訊地圖用的也是GCJ02座標 * @param double $lng 經度 * @param double $lat 緯度 * @return array */ public static function Convert_BD09_To_GCJ02($lng, $lat) { $x_pi = 3.14159265358979324 * 3000.0 / 180.0; $x = $lng - 0.0065; $y = $lat - 0.006; $z = sqrt($x * $x + $y * $y) - 0.00002 * sin($y * $x_pi); $theta = atan2($y, $x) - 0.000003 * cos($x * $x_pi); $lng = $z * cos($theta); $lat = $z * sin($theta); return array('lng' => $lng, 'lat' => $lat); }
gcj02code
'lng' => '118.34593200683594' 'lat' => '33.9527587890625'
wgs84htm
'lng' => '118.34032440185547' 'lat' => '33.95400619506836'
實驗證實,若是想比對騰訊地圖座標距離,請用gcj02獲取座標。blog