百度地圖逆地址解析

做者:卞功鑫 ,轉載請保留:http://www.cnblogs.com/BinBinGo/p/5682725.html javascript

 

http://api.map.baidu.com/geocoder/v2/?ak=xxx&coordtype=wgs84ll&callback=renderReverse&location=37.58585,118.8889&output=xml&pois=1php

 

其中html

ak 爲百度密鑰java

callback 不知道啥意思,反正就是這麼寫的.web

output 能夠爲xml 也能夠爲json算法

 百度的優勢就是沒有調用次數限制,這點比騰訊的10000/天好多了.json

如今都有次數限定了,惟一比較好點的是高德,因此再也不推薦百度或者騰訊 .api

如下爲百度內容:數組

 

Geocoding API

什麼是Geocoding?

Geocoding API 是一類簡單的HTTP接口,用於提供從地址到經緯度座標或者從經緯度座標到地址的轉換服務,用戶可使用C# 、C++、Java等開發語言發送HTTP請求且接收JSON、XML的返回數據。安全

geocoding.png

Geocoding API包括地址解析和逆地址解析功能:

地理編碼:即地址解析,由詳細到街道的結構化地址獲得百度經緯度信息,例如:「北京市海淀區中關村南大街27號」地址解析的結果是「lng:116.31985,lat:39.959836」。同時,地理編碼也支持名勝古蹟、標誌性建築名稱直接解析返回百度經緯度,例如:「百度大廈」地址解析的結果是「lng:116.30815,lat:40.056885」 ,通用的POI檢索需求,建議使用Place API。

逆地理編碼:即逆地址解析,由百度經緯度信息獲得結構化地址信息,例如:「lat:31.325152,lng:120.558957」逆地址解析的結果是「江蘇省蘇州市虎丘區塔園路318號」。

使用說明

使用限制:

百度地圖Geocoding API是一套免費對外開放的API,默認配額6000次/天,若需更高配額,請申請開發者認證以獲取更高配額和更及時技術支持。

使用方法:

第一步:申請ak(即獲取密鑰),若無百度帳號則首先須要註冊百度帳號。

第二步,拼寫發送http請求的url,注意需使用第一步申請的ak。

第三步,接收http請求返回的數據(支持json和xml格式)。

Hello, World示例:

發送一個地址是「百度大廈」的請求,返回該地址對應的地理座標。示例URL以下:

http://api.map.baidu.com/geocoder/v2/?address=北京市海淀區上地十街10號&output=json&ak=E4805d16520de693a3fe707cdc962045&callback=showLocation

服務地址

服務地址:

http://api.map.baidu.com/geocoder/v2/

組成說明:

域名:api.map.baidu.com

服務名:geocoder

服務版本號:較以前版本,v2版本新增參數。

通用接口參數

參數 是否必須 默認值 格式舉例 含義
output xml json或xml 輸出格式爲json或者xml
ak E4805d16520de693a3fe707cdc962045 用戶申請註冊的key,自v2開始參數修改成「ak」,以前版本參數爲「key」
sn   若用戶所用ak的校驗方式爲sn校驗時該參數必須。 (sn生成算法
callback callback=showLocation(JavaScript函數名) 將json格式的返回值經過callback函數返回以實現jsonp功能

地理編碼服務

地理編碼專屬請求參數:

參數 是否必須 默認值 格式舉例 含義 參數
address 北京市海淀區上地十街10號

根據指定地址進行座標的反定向解析,最多支持100個字節輸入。

能夠輸入三種樣式的值,分別是: 
一、標準的地址信息,如北京市海淀區上地十街十號 
二、名勝古蹟、標誌性建築物,如天安門,百度大廈 
三、支持「*路與*路交叉口」描述方式,如北一環路和阜陽路的交叉路口

注意:後兩種方式並不老是有返回結果,只有當地址庫中存在該地址描述時纔有返回。

city 「北京市」 「廣州市」

地址所在的城市名。用於指定上述地址所在的城市,當多個城市都有上述地址時,該參數起到過濾做用。

對於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保留字 ! * ' ( ) ; : @ & = + $ , / ? % # [ ]

附註:

一、javascript中通常採用encodeURIComponent函數對特殊字符進行編碼;

二、Java中可使用函數URLEncoder.encode對特殊字符進行編碼;

三、C#中可使用函數HttpUtility.UrlEncode對特殊字符進行編碼;

四、php中可使用函數urlencode對特殊字符進行編碼。

地理編碼示例:

如下是關於地理編碼參數使用方法的示例。發送請求顯示結果的JavaScript代碼此處查看。 
請求示例:對北京市百度大廈進行地理編碼查詢;
http://api.map.baidu.com/geocoder/v2/?ak=E4805d16520de693a3fe707cdc962045&callback=renderOption&output=json&address=百度大廈&city=北京市

地理編碼返回結果字段:

名稱

類型

說明

status

Int

返回結果狀態值, 成功返回0,其餘值請查看下方返回碼狀態表。

location

object

經緯度座標

 

lat

float

緯度值

lng

float

經度值

precise

Int

位置的附加信息,是否精確查找。1爲精確查找,即準確打點;0爲不精確,即模糊打點。

confidence

Int

可信度,描述打點準確度

level

string

地址類型

json格式的返回值:

//帶回調函數的返回格式  
showLocation&&showLocation( 
{
  status: 0,
  result: {
    location: {
      lng: 116.30814954222,
      lat: 40.056885091681
    },
    precise: 1,
    confidence: 80,
    level: "商務大廈"
  }
}
)

//不帶回調函數的返回值
{
  status: 0,
  result: {
    location: {
      lng: 116.30814954222,
      lat: 40.056885091681
    },
    precise: 1,
    confidence: 80,
    level: "商務大廈"
  }
}

xml格式的返回值:

<GeocoderSearchResponse> <status>0</status> <result> <location> <lat>40.056885091681</lat> <lng>116.30814954222</lng> </location> <precise>1</precise> <confidence>80</confidence> <level>商務大廈</level> </result> </GeocoderSearchResponse>

特別說明: 若解析status字段爲OK,但結果內容爲空,緣由分析及可嘗試方法: 一、地址庫裏無此數據,本次結果爲空; 二、加入city字段從新解析; 三、將過於詳細或簡單的地址更改至省市區縣街道從新解析。

逆地理編碼服務

逆地理編碼專屬請求參數:

參數 是否必須 默認值 格式舉例 含義

coordtype

bd09ll

bd09ll 百度經緯度座標

座標的類型,目前支持的座標類型包括:bd09ll(百度經緯度座標)、bd09mc(百度米制座標)、gcj02ll(國測局經緯度座標)、wgs84ll( GPS經緯度)

location

38.76623,116.43213 lat<緯度>,lng<經度>

根據經緯度座標獲取地址

pois

0

0

是否顯示指定位置周邊的poi,0爲不顯示,1爲顯示。當值爲1時,顯示周邊100米內的poi。

狀態字段:

名稱 類型 說明
status constant 返回結果狀態值, 成功返回0,其餘值請查看附錄
location lat 緯度座標
lng 經度座標
formatted_address 結構化地址信息
business 所在商圈信息,如 "人民大學,中關村,蘇州街"
addressComponent country 國家
province 省名
city 城市名
district 區縣名
street 街道名
street_number 街道門牌號
adcode 行政區劃代碼
country_code 國家代碼
direction 和當前座標點的方向,當有門牌號的時候返回數據
distance 和當前座標點的距離,當有門牌號的時候返回數據
pois(周邊poi數組) addr 地址信息
cp 數據來源
direction 和當前座標點的方向
distance 離座標點距離
name poi名稱
poiType poi類型,如’ 辦公大廈,商務大廈’
point poi座標{x,y}
tel 電話
uid poi惟一標識
zip 郵編
sematic_description constant 當前位置結合POI的語義化結果描述。

json示例:

http://api.map.baidu.com/geocoder/v2/?ak=E4805d16520de693a3fe707cdc962045&callback=renderReverse&location=39.983424,116.322987&output=json&pois=1

xml示例:

http://api.map.baidu.com/geocoder/v2/?ak=E4805d16520de693a3fe707cdc962045&callback=renderReverse&location=39.983424,116.322987&output=xml&pois=1

特別說明:

一、由於Geocoding和反Geocoding使用的門址數據以及算法都不是同樣的,因此會出現不能一一對應的現象。

二、逆地址解析location參數傳入的參數格式是(緯度lat,經度lng)。

返回碼狀態表

返回碼 定義
0 正常
1 服務器內部錯誤
2 請求參數非法
3 權限校驗失敗
4 配額校驗失敗
5 ak不存在或者非法
101 服務禁用
102 不經過白名單或者安全碼不對
2xx 無權限
3xx 配額錯誤

升級說明

v2版本較之v1版本,功能更新詳見更新日誌。若需查看v1文檔,請點擊目錄 「Geocoding APIv1.0」。

若v1版本升級至v2版本,地理/逆地理編碼的請求url,參數:新增版本號「v2」,修改「key」爲「ak」。v2不兼容v1版本的key,若需升級,請從新獲取密鑰。

相關文章
相關標籤/搜索