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



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

我們知道,Google地圖、soso地圖與百度地圖的坐標是不一樣的,通常會差挺遠一段距離。因此我們在微信中使用百度地圖導航等百度地圖API時,若根據微信獲取的用戶位置信息的話,得到的結果通常是不准確的。這時我們就需要把微信獲取的用戶位置坐標轉換成百度地圖對應的坐標才可以。

 

下面是我們在微信公眾號中獲得的用戶位置的XML數據包(用戶主動發送來的位置,開通高級接口的可以主動獲取用戶信息,獲取結果參考這里):

<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>

參數說明:

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

我們需要做的是把 Latitude 和 Longitude 轉換成百度地圖對應的坐標(示例):

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

服務參數說明

參數 含義 取值范圍 是否必須 默認取值
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地圖坐標;

8:51地圖坐標

默認為1,即GPS設備獲取的坐標
to 目的坐標類型 有兩種可供選擇:5、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 目的坐標類型

有兩種可供選擇:5、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產品發布。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM