騰訊地圖經(jīng)緯度轉(zhuǎn)百度地圖經(jīng)緯度(PHP)

最近想幫公司線下的門店采集一下經(jīng)緯度,標注在地圖上,一研究居然地圖還有這么多標準,現(xiàn)總結(jié)相關(guān)知識如下,首先了解一下當前互聯(lián)網(wǎng)地圖的坐標系現(xiàn)狀

一、坐標系介紹

1. 地球坐標 (WGS84)

  • 國際標準,從專業(yè)GPS 設備中取出的數(shù)據(jù)的坐標系
  • 國際地圖提供商使用的坐標系

2. 火星坐標 (GCJ-02)也叫國測局坐標系

  • 中國標準,從國行移動設備中定位獲取的坐標數(shù)據(jù)使用這個坐標系
  • 國家規(guī)定: 國內(nèi)出版的各種地圖系統(tǒng)(包括電子形式),必須至少采用GCJ-02對地理位置進行首次加密。
  • 騰訊地圖用的也是GCJ02坐標

3. 百度坐標 (BD-09)

  • 百度標準,百度 SDK,百度地圖,Geocoding 使用
  • (本來就亂了,百度又在火星坐標上來個二次加密)
二、PHP 代碼
<?php
    $lng=floatval(112.618056);//用變量替換時注意數(shù)據(jù)類型
    $lat=floatval(37.858867);
    $locXY=Convert_GCJ02_To_BD09($lng,$lat);
    $content="百度地圖坐標系,經(jīng)度:".$locXY['lng'].";緯度:".$locXY['lat'];
    echo $content;
    /**
    * 中國正常GCJ02坐標-->百度地圖BD09坐標
    * 騰訊地圖用的也是GCJ02坐標
    * @param double $lng 經(jīng)度
    * @param double $lat 緯度
    */
    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);
    }
?>

大家可以通過此工具來驗證準確性:百度地圖拾取坐標系統(tǒng)

百度地圖坐標拾取系統(tǒng) 截圖
參考資料:

http://cnodejs.org/topic/564c0a27e4766d487f6fe38d
http://www.open-open.com/code/view/1440854840138

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容