標紅的是可以通過經緯度獲得當前城市信息(微信定位使用)。
Geocoding API有哪些功能?
Geocoding API包括地址解析和逆地址解析功能。
- 地址解析是指,由詳細到街道的結構化地址得到百度經緯度信息,且支持名勝古蹟、標誌性建築名稱直接解析返回百度經緯度。例如:“北京市海淀區中關村南大街27號”地址解析的結果是“lng:116.31985,lat:39.959836”,“百度大廈”地址解析的結果是“lng:116.30815,lat:40.056885”
- 逆地址解析是指,由百度經緯度信息得到結構化地址信息。例如:“lat:31.325152,lng:120.558957”逆地址解析的結果是“江蘇省蘇州市虎丘區塔園路318號”。注意:
1.因爲Geocoding和反Geocoding使用的門址數據以及算法都不是一樣的,所以會出現不能一一對應的現象。
2.解析過程中可能會出現一對座標值對應多個地址門牌信息,本接口將返回距離座標點最近的一個地址門牌信息。
使用限制
目前無任何使用限制。請申請key,然後使用該接口。
如何使用
第一步,申請key,點擊這裏獲取密鑰,申請key需要註冊百度賬號;
第二步,拼寫發送http請求的url,注意需使用第一步申請的key;
第三步,接收http請求返回的數據(支持json和xml格式)。
服務地址
- 地址解析:根據地址獲取座標
http://api.map.baidu.com/geocoder?address=地址&output=輸出格式類型&key=用戶密鑰&city=城市名
- 逆地址解析:根據座標獲取地址
http://api.map.baidu.com/geocoder?location=緯度,經度&output=輸出格式類型&key=用戶密鑰
備註:
1. city屬於可選參數,通常情況可以不使用,若解析無結果,請嘗試增加此字段。
2. 支持名勝古蹟、標誌性建築物名稱解析返回百度經緯度座標,如address=“百度大廈”。
3. 支持使用“*路與*路交叉口”方式解析返回百度經緯度座標,若地址庫中存在該地址描述,返回百度經緯度座標。
4. 若解析status字段爲OK,若結果內容爲空,原因分析及可嘗試方法:
- 地址庫裏無此數據,本次結果爲空。
- 加入city字段重新解析;
- 將過於詳細或簡單的地址更改至省市區縣街道重新解析;
5. 特別提醒:逆地址解析location參數傳入的參數格式是(緯度lat,經度lng)。
接口參數
參數 是否必須 默認值 格式舉例 含義 output 否 json json或xml 輸出格式爲json或者xml address 是 無 北京市海淀區上地十街10號 根據指定地址進行座標的反定向解析 location 是 無 38.76623,116.43213
lat<緯度>,lng<經度>根據指定座標來進行地址的解析 city 否 “北京市” “廣州市” 地址所在的城市名 key 是 無 8cb976834235d8cbcde2dce4835ae191 用戶申請註冊的key 上表中address和location兩個字段如果同時出現,則優先選擇address執行地理編碼功能。對於address字段可能會出現中文或其它一些特殊字符(如:空格),所以對於類似的字符都要進行編碼處理,編碼成 UTF-8 字符的二字符十六進制值,凡是不在下表中的字符都要進行編碼。
字符集合 字符 URL非保留字 a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 – _ . ~ URL保留字 ! * ‘ ( ) ; : @ & = + $ , / ? % # [ ] 附註:
(1) javascript中一般採用encodeURIComponent函數對特殊字符進行編碼。
(2) Java中可以使用函數URLEncoder.encode對特殊字符進行編碼。
(3) C#中可以使用函數HttpUtility.UrlEncode對特殊字符進行編碼。
(4) php中可以使用函數urlencode對特殊字符進行編碼。
返回數據說明
返回結果(地址解析的結果)
{status: '字符串狀態常量', 取值如下: //OK 成功 INVILID_KEY 非法密鑰 INVALID_PARAMETERS 非法參數,參數錯誤時候給出。 result: { location: { lat: 緯度:數值, lng: 經度:數值 }, precise:’位置的附加信息,是否精確查找’(1爲精確查找,0爲不精確查找), confidence: 可信度, level:'級別' }, }
返回結果(反地址解析的結果)
{status: '字符串狀態常量', 取值如下: //OK 成功 INVILID_KEY 非法密鑰 INVALID_PARAMETERS 非法參數,參數錯誤時候給出。 result: { location: { lat: 緯度:數值, lng: 經度:數值 }, formatted_address: ‘詳細地址描述’, business: '周圍商圈', addressComponent:{ city:’城市名稱’, district: ‘區縣名稱’, province:’省份名稱’, street: ‘街道名稱’, streetNumber: '門牌號碼' }, cityCode: '城市代碼' } }
接口示例
根據詳細地址獲取座標
//根據“上地十街10號”返回座標“lng:116.307175, lat:40.057098”,以json格式輸出
//根據“上地十街十號”返回座標“lng:116.307175, lat:40.057098”,以xml格式輸出
在指定城市內檢索詳細地址的座標// 在北京市內根據“上地十街10號”返回座標“lng:116.307175, lat:40.057098”,以json格式輸出
// 在北京市內根據“上地十街10號”返回座標“lng:116.307175, lat:40.057098”,以json格式輸出
根據特定建築物獲取它的座標http://api.map.baidu.com/geocoder?address=%E7%99%BE%E5%BA%A6%E5%A4%A7%E5%8E%A6&output=json&key=37492c0ee6f924cb5e934fa08c6b1676 //根據“百度大廈”名稱返回座標“lng:116.307175, lat:40.057098”,以json格式輸入
http://api.map.baidu.com/geocoder?address=%E7%99%BE%E5%BA%A6%E5%A4%A7%E5%8E%A6&output=xml&key=37492c0ee6f924cb5e934fa08c6b1676 //根據“百度大廈”名稱返回座標“lng:116.307175, lat:40.057098”,以xml格式輸入
根據“*路與*路交叉路口”類型地址描述獲得它的座標//根據“北一環路和阜陽路的交叉路口”名稱返回座標“lng:117.294364, lat:31.885558”,以json格式輸入
//根據“北一環路和阜陽路的交叉路口”名稱返回座標“lng:117.294364, lat:31.885558”,以xml格式輸入
根據座標獲取它的地址//解析“lat:39.983424, lng:116.322987”座標返回“北京市海淀區中關村大街27號1101-08室”,以json格式輸出
//解析“lat:39.983424, lng:116.322987”座標返回“北京市海淀區中關村大街27號1101-08室”,以xml格式輸出