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