在重慶網站建設中,經常會用到用戶的位置信息,主要又兩種辦法:
1、用戶的ip來定位,只能定位到城市,但是要定位到詳細的區縣就不得行了
參考這篇文章:如何用ip定位
2、用html5的特性來定位,可以定位到用戶的詳細經緯度(當前頁會有偏差),然后在用經緯度轉換成省市區
1、先獲取用戶的經緯度,html前端js代碼如下,注意,經過我們測試,網站必須要用https才能獲取定位,http是無法定位的
<script type="text/javascript"> //必須整站都用https window.addEventListener('load', function() { if (navigator.geolocation) { navigator.geolocation.watchPosition(update,function(){ console.log('無法獲取您的位置信息!'); }); } }, false); function update(position) { var lat = position.coords.latitude; var lng = position.coords.longitude; console.log('維度:' + lat + ', 經度:' + lng); } </script>
2、獲取到用戶的經緯度后,在用百度的api把經緯度轉成省市區
百度文檔地址:http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding-abroad
接口請求地址:
請求參數:
參數名 | 參數含義 | 類型 | 舉例 | 默認值 | 是否必須 |
---|---|---|---|---|---|
location | 根據經緯度坐標獲取地址。 | float | 38.76623,116.43213 | 無 | 是 |
coordtype | 坐標的類型,目前支持的坐標類型包括:bd09ll(百度經緯度坐標)、bd09mc(百度米制坐標)、gcj02ll(國測局經緯度坐標,僅限中國)、wgs84ll( GPS經緯度) 坐標系說明 | string | bd09ll、gcj02ll | bd09ll | 否 |
ret_coordtype | 可選參數,添加后返回國測局經緯度坐標或百度米制坐標 坐標系說明 | string | gcj02ll(國測局坐標,僅限中國)、bd09mc(百度墨卡托坐標) | bd09ll(百度經緯度坐標) | 否 |
radius | poi召回半徑,允許設置區間為0-1000米,超過1000米按1000米召回。 | int | 500 | 1000 | 否 |
ak | 用戶申請注冊的key,自v2開始參數修改為“ak”,之前版本參數為“key” 申請ak | string | E4805d16520de693a3fe70 | 無 | 是 |
sn | 若用戶所用ak的校驗方式為sn校驗時該參數必須 sn生成 | string | 無 | 否 | |
output | 輸出格式為json或者xml | string | json或xml | xml | 否 |
callback | 將json格式的返回值通過callback函數返回以實現jsonp功能 | string | callback=showLocation(JavaScript函數名) | 無 | 否 |
poi_types | 可以選擇poi類型召回不同類型的poi,例如poi_types=酒店,如想召回多個POI類型數據,可以‘|’分割 例如poi_types=酒店|房地產 不添加該參數則默認召回全部POI分類數據。poi分類 | string | poi_types=酒店 poi_types=酒店|房地產 | 無 | 否 |
extensions_poi | extensions_poi=0,不召回pois數據。 extensions_poi=1,返回pois數據(默認顯示周邊1000米內的poi),并返回sematic_description語義化數據。 | string | 0 | 無 | 否 |
extensions_road | 當取值為true時,召回坐標周圍最近的3條道路數據。區別于行政區劃中的street參數(street參數為行政區劃中的街道,和普通道路不對應)。 | string | false、true | false | 否 |
extensions_town | 當取值為true時,行政區劃返回鄉鎮級數據(town),僅國內召回鄉鎮數據。默認不訪問。 | string | true | 無 | 否 |
language | 指定召回的行政區劃語言類型。 召回行政區劃語言list(全量支持的語言見示例)。 當language=local時,根據請求中坐標所對應國家的母語類型,自動選擇對應語言類型的行政區劃召回。 目前支持多語言的行政區劃區劃包含country、province、city、district | string | el gu en vi ca it iw sv eu ar cs gl id es en-GB ru sr nl pt tr tl lv en-AU lt th ro fil ta fr bg hr bn de hu fa hi pt-BR fi da ja te pt-PT ml ko kn sk zh-CN pl uk sl mr local | en,國內默認zh-CN | 否 |
language_auto | 當用戶指定language參數時,是否自動填充行政區劃。 1填充,0不填充。 填充:當服務按某種語言類別召回時,若某一行政區劃層級的語言數據未覆蓋,則按照“英文→中文→本地語言”類別行政區劃數據對該層級行政區劃進行填充,保證行政區劃數據召回完整性。 | int | 0、1 | 無 | 否 |
返回結果參數:
名稱 | 含義 | 類型 | |
---|---|---|---|
status | 返回結果狀態值, 成功返回0,其他值請查看下方返回碼狀態表。 | int | |
location | 經緯度坐標 | object | |
lat | 緯度值 | float | |
lng | 經度值 | float | |
formatted_address | 結構化地址信息 | string | |
business | 坐標所在商圈信息,如 "人民大學,中關村,蘇州街"。最多返回3個。 | string | |
addressComponent (注意,國外行政區劃,字段僅代表層級) | country | 國家 | string |
country_code | 國家編碼 | int | |
country_code_iso | 國家英文縮寫(三位) | string | |
country_code_iso2 | 國家英文縮寫(兩位) | string | |
province | 省名 | string | |
city | 城市名 | string | |
city_level | 城市所在級別(僅國外有參考意義。國外行政區劃與中國有差異,城市對應的層級不一定為『city』。country、province、city、district、town分別對應0-4級,若city_level=3,則district層級為該國家的city層級) | int | |
district | 區縣名 | string | |
town | 鄉鎮名,需設置extensions_town=true時才會返回 | string | |
town_code | 鄉鎮id | string | |
street | 街道名(行政區劃中的街道層級) | string | |
street_number | 街道門牌號 | string | |
adcode | 行政區劃代碼 | int | |
direction | 相對當前坐標點的方向,當有門牌號的時候返回數據 | string | |
distance | 相對當前坐標點的距離,當有門牌號的時候返回數據 | string | |
pois(周邊poi數組) | addr | 地址信息 | string |
cp | 數據來源(已廢棄) | string | |
direction | 和當前坐標點的方向 | string | |
distance | 離坐標點距離 | int | |
name | poi名稱 | string | |
tag | poi類型,如’美食;中餐廳’。tag與poiType字段均為poi類型,建議使用tag字段,信息更詳細。poi詳細類別 | string | |
point | poi坐標{x,y} | float | |
tel | 電話 | int | |
uid | poi唯一標識 | string | |
zip | 郵編 | int | |
parent_poi | poi對應的主點poi(如,海底撈的主點為上地華聯,該字段則為上地華聯的poi信息。如無,該字段為空),包含子字段和pois基礎召回字段相同。 | ||
roads | name | 周邊道路名稱 | string |
distance | 傳入的坐標點距離道路的大概距離 | string | |
poiRegions | direction_desc | 請求中的坐標與所歸屬區域面的相對位置關系 | string |
name | 歸屬區域面名稱 | string | |
tag | 歸屬區域面類型 | string | |
sematic_description | 當前位置結合POI的語義化結果描述。需設置extensions_poi=1才能返回。 | string | |
cityCode | 百度定義的城市id(正常更新與維護,但建議使用adcode) | int |