關於手機地圖api【百度/高德/百度轉高德】

一、百度地圖api 【手機有時候會出現空白頁面】

(1)百度座標拾取器  地址:http://api.map.baidu.com/lbsapi/getpoint/index.html

(2)第一個緯度,第二個經度(緯度最大是90度,大於90度的一定是經度)

(3)api 的書寫

<a href="http://api.map.baidu.com/marker?location=緯度,經度&output=html&src=we7&title=標題">地圖</a>

二、高德地圖api

(1)利用百度座標拾取器的座標轉換成高德座標

百度座標系:bd-09:百度座標系是在GCJ-02座標系的基礎上再次加密偏移後形成的座標系,只適用於百度地圖。(目前百度API提供了從其它座標系轉換爲百度座標系的API,但卻沒有從百度座標系轉爲其他座標系的API)。

GCJ-02座標系,又名“火星座標系”:高德和Google在國內都是使用GCJ-02座標系,可以說,GCJ-02是國內最廣泛使用的座標系。

<?php
    //GCJ-02(火星,高德) 座標轉換成 BD-09(百度) 座標
      //@param bd_lon 百度經度
    //@param bd_lat 百度緯度
    function bd_encrypt($gg_lon,$gg_lat)
    {
        $x_pi = 3.14159265358979324 * 3000.0 / 180.0;
        $x = $gg_lon;
        $y = $gg_lat;
        $z = sqrt($x * $x + $y * $y) - 0.00002 * sin($y * $x_pi);
        $theta = atan2($y, $x) - 0.000003 * cos($x * $x_pi);
        $data['bd_lon'] = $z * cos($theta) + 0.0065;
        $data['bd_lat'] = $z * sin($theta) + 0.006;
        return $data;
    }
    //BD-09(百度) 座標轉換成  GCJ-02(火星,高德) 座標
      //@param bd_lon 百度經度
    //@param bd_lat 百度緯度
    function bd_decrypt($bd_lon,$bd_lat)
    {
        $x_pi = 3.14159265358979324 * 3000.0 / 180.0;
        $x = $bd_lon - 0.0065;
        $y = $bd_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);
        $data['gg_lon'] = $z * cos($theta);
        $data['gg_lat'] = $z * sin($theta);
        return $data;
    }
    //測試
    $bd = bd_encrypt(108.947903,34.231966);
    //輸出:array(2) { ["bd_lon"]=> float(108.954466795) ["bd_lat"]=> float(34.2376965936) }
    $gg = bd_decrypt(108.95434,34.238235);
    //輸出:array(2) { ["gg_lon"]=> float(108.947903625) ["gg_lat"]=> float(34.2319662425) }
?> 

(2)api 的書寫

<?php 
$x_pi = 3.14159265358979324 * 3000.0 / 180.0;
$x = $r['k2'];
$y = $r['k1'];
$z = sqrt($x * $x + $y * $y) - 0.00002 * sin($y * $x_pi);
$theta = atan2($y, $x) - 0.000003 * cos($x * $x_pi);
$data['bd_lon'] = $z * cos($theta) + 0.0065;
$data['bd_lat'] = $z * sin($theta) + 0.006;
//$aaa=$this->bd_decrypt('126.593613','45.706279');
?>

<a href="http://mo.amap.com/?q={$data['bd_lon']},{$data['bd_lat']}&name={$r['title']}&dev=0">地圖</a>




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章