微信公衆號開發之用戶地理位置座標轉百度座標


微信公衆號開發之用戶地理位置座標轉百度座標(搜狗、google地圖座標轉百度地圖座標)javascript

咱們知道,Google地圖、soso地圖與百度地圖的座標是不同的,一般會差挺遠一段距離。所以咱們在微信中使用百度地圖導航等百度地圖API時,若根據微信獲取的用戶位置信息的話,獲得的結果一般是不許確的。這時咱們就須要把微信獲取的用戶位置座標轉換成百度地圖對應的座標才能夠。php

 

下面是咱們在微信公衆號中得到的用戶位置的XML數據包(用戶主動發送來的位置,開通高級接口的能夠主動獲取用戶信息,獲取結果參考這裏):java

<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1351776360</CreateTime>
<MsgType><![CDATA[location]]></MsgType>
<Location_X>23.134521</Location_X>
<Location_Y>113.358803</Location_Y>
<Scale>20</Scale>
<Label><![CDATA[位置信息]]></Label>
<MsgId>1234567890123456</MsgId>
</xml>

參數說明:git

參數 描述
ToUserName 開發者微信號
FromUserName 發送方賬號(一個OpenID)
CreateTime 消息建立時間 (整型)
MsgType location
Location_X 地理位置維度
Location_Y 地理位置經度
Scale 地圖縮放大小
Label 地理位置信息
MsgId 消息id,64位整型

咱們須要作的是把 Latitude 和 Longitude 轉換成百度地圖對應的座標(示例):web

百度地圖座標轉化API組成說明(更多):ajax

服務參數說明算法

參數 含義 取值範圍 是否必須 默認取值
coords 源座標 格式:經度,緯度;經度,緯度…限制:最多支持100個格式舉例:114.21892734521,29.575429778924;114.21892734521,29.575429778924
ak 開發者密鑰  
from 源座標類型 取值爲以下:1:GPS設備獲取的角度座標;2:GPS獲取的米制座標、sogou地圖所用座標;3:google地圖、soso地圖、aliyun地圖、mapabc地圖和amap地圖所用座標4:3中列表地圖座標對應的米制座標5:百度地圖採用的經緯度座標6:百度地圖採用的米制座標

7:mapbar地圖座標;json

8:51地圖座標api

默認爲1,即GPS設備獲取的座標
to 目的座標類型 有兩種可供選擇:五、6。5:bd09ll(百度經緯度座標),6:bd09mc(百度米制經緯度座標); 默認爲5,即bd09ll(百度座標)
output 返回結果格式 json或者xml json

返回值說明數組

名稱 類型 含義 取值範圍
status init 狀態碼 正常0,異常非0,詳細見狀態碼說明
result json或者xml數組 轉換結果 與輸入順序一致
  x float 橫座標  
y float 縱座標  

 

下面上代碼:

<?php

$postData = "<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1351776360</CreateTime>
<MsgType><![CDATA[location]]></MsgType>
<Location_X>23.134521</Location_X>
<Location_Y>113.358803</Location_Y>
<Scale>20</Scale>
<Label><![CDATA[位置信息]]></Label>
<MsgId>1234567890123456</MsgId>
</xml> ";

$object = simplexml_load_string($postData, 'SimpleXMLElement', LIBXML_NOCDATA);		

$lat = $object->Location_X;  //緯度
$lng = $object->Location_Y;  //經度
//這裏from參數用1會更加精準。1:GPS設備獲取的角度座標,wgs84座標;
$q = "http://api.map.baidu.com/geoconv/v1/?coords={$lng},{$lat}&from=3&to=5&ak=你的API KEY";
$result = json_decode(file_get_contents($q));
echo "轉換前的經度:".$lng."<br/>";
echo "轉換後的經度:".$result->result[0]->x."<br/>";  
echo "轉換前的緯度:".$lat."<br/>";
echo "轉換後的緯度:".$result->result[0]->y."<br/>"
 
 
這塊用到了百度地圖的座標轉換API
http://lbsyun.baidu.com/index.php?title=webapi/guide/changeposition
 

產品介紹

百度地圖座標轉換API是一套以HTTP形式提供的座標轉換接口,用於將經常使用的非百度座標(目前支持GPS設備獲取的座標、google地圖座標、soso地圖座標、amap地圖座標、mapbar地圖座標)轉換成百度地圖中使用的座標,並可將轉化後的座標在百度地圖JavaScript API、車聯網API、靜態圖API、web服務API等產品中使用。注意Android SDK、iOS SDK、定位SDK和導航SDK座標轉換服務需單獨申請 。

點擊查看示例

適用場景

該接口適用於需將非百度地圖座標的座標進行轉化,進而將其運用到百度地圖開發的用戶。該接口還支持批量座標轉化,一次最多可轉換100個座標點。

使用限制

 使用座標轉服服務前,首先須要登陸API控制檯申請密鑰ak,座標轉換服務屬於for server類應用

 座標轉換服務每日請求次數上限爲10萬次,每次最多支持100個座標點的轉換,若需更高配額,請申請開發者認證以獲取更高配額和更及時技術支持。

使用方法

第一步,申請密鑰(ak),做爲訪問服務的依據;

第二步,按照請求參數說明拼寫發送http請求的url,注意需使用第一步申請的ak;

第三步,接收返回的數據(json或者xml格式)。

注:本接口支持回調。另外,同一個GPS座標屢次轉爲百度座標時,每次轉換結果都不徹底同樣,偏差在2米範圍內,屬於正常偏差,不影響正常使用。

服務地址

http://api.map.baidu.com/geoconv/v1/?

組成說明:

域名:api.map.baidu.com

服務名:geoconv

服務版本號:v1

服務參數說明

參數 含義 取值範圍 是否必須 默認取值
coords 源座標

格式:經度,緯度;經度,緯度…

限制:最多支持100個

格式舉例:

114.21892734521,29.575429778924;

114.21892734521,29.575429778924

 

ak 開發者密鑰  
sn 用戶的權限簽名   若用戶所用ak的校驗方式爲sn校驗時該參數必須。 (sn生成算法)
from 源座標類型

取值爲以下:

1:GPS設備獲取的角度座標,wgs84座標;

2:GPS獲取的米制座標、sogou地圖所用座標;

3:google地圖、soso地圖、aliyun地圖、mapabc地圖和amap地圖所用座標,國測局座標;

4:3中列表地圖座標對應的米制座標;

5:百度地圖採用的經緯度座標;

6:百度地圖採用的米制座標;

7:mapbar地圖座標;

8:51地圖座標

 

默認爲1,即GPS設備獲取的座標
to 目的座標類型

有兩種可供選擇:五、6。

5:bd09ll(百度經緯度座標),

6:bd09mc(百度米制經緯度座標);

 

默認爲5,即bd09ll(百度座標)
output 返回結果格式

json或者xml

 

json

返回值說明

名稱 類型 含義 取值範圍
status init 狀態碼 正常0,異常非0,詳細見狀態碼說明
result json或者xml數組 轉換結果 與輸入順序一致
  x float 橫座標  
  y float 縱座標  

接口示例

參數
coords 114.21892734521,29.575429778924;114.21892734521,29.575429778924
from 1
to 5

json 示例:

http://api.map.baidu.com/geoconv/v1/?coords=114.21892734521,29.575429778924;114.21892734521,29.575429778924&from=1&to=5&ak=你的密鑰

狀態碼說明

狀態碼 含義
1 內部錯誤
4 轉換失敗(X→GPS時必現,根據法律規定,不支持將任何類型的座標轉換爲GPS座標)
21 from非法
22 to非法
24 coords格式非法
25 coords個數非法,超過限制

更新日誌

2014.3.6座標轉換API v1.0產品發佈。

相關文章
相關標籤/搜索