japanese少妇高潮潮喷 -精品国产AV一区二区三区-麻豆av一区二区三区久久-国产精品无码专区

在HTML5實(shí)現(xiàn)獲取地理位置信息并定位功能

發(fā)布時(shí)間:2025-06-04 點(diǎn)擊:23
html5提供了地理位置定位功能(geolocation api),能確定用戶位置,我們可以借助html5的該特性開發(fā)基于地理位置信息的應(yīng)用。本文結(jié)合實(shí)例給大家分享如何使用html5,借助百度、谷歌地圖接口來獲取用戶準(zhǔn)確的地理位置信息。
如何使用html5地理位置定位功能
定位功能(geolocation)是html5的新特性,因此只有在支持html5的現(xiàn)代瀏覽器上運(yùn)行,特別是手持設(shè)備如iphone,地理定位更加精確。首先我們要檢測(cè)用戶設(shè)備瀏覽器是否支持地理定位,如果支持則獲取地理信息。注意這個(gè)特性可能侵犯用戶的隱私,除非用戶同意,否則用戶位置信息是不可用的,所以我們?cè)谠L問該應(yīng)用時(shí)會(huì)提示是否允許地理定位,我們當(dāng)然選擇允許即可。
復(fù)制代碼代碼如下:
function getlocation(){ if (navigator.geolocation){ navigator.geolocation.getcurrentposition(showposition,showerror); }else{ alert(瀏覽器不支持地理定位。); } }
上面的代碼可以知道,如果用戶設(shè)備支持地理定位,則運(yùn)行 getcurrentposition() 方法。如果getcurrentposition()運(yùn)行成功,則向參數(shù)showposition中規(guī)定的函數(shù)返回一個(gè)coordinates對(duì)象,getcurrentposition() 方法的第二個(gè)參數(shù)showerror用于處理錯(cuò)誤,它規(guī)定當(dāng)獲取用戶位置失敗時(shí)運(yùn)行的函數(shù)。我們先來看函數(shù)showerror(),它規(guī)定獲取用戶地理位置失敗時(shí)的一些錯(cuò)誤代碼處理方式:
復(fù)制代碼代碼如下:
function showerror(error){ switch(error.code) { case error.permission_denied: alert(定位失敗,用戶拒絕請(qǐng)求地理定位); break; case error.position_unavailable: alert(定位失敗,位置信息是不可用); break; case error.timeout: alert(定位失敗,請(qǐng)求獲取用戶位置超時(shí)); break; case error.unknown_error: alert(定位失敗,定位系統(tǒng)失效); break; } }
我們?cè)賮砜春瘮?shù)showposition(),調(diào)用coords的latitude和longitude即可獲取到用戶的緯度和經(jīng)度。
復(fù)制代碼代碼如下:
function showposition(position){ var lat = position.coords.latitude; //緯度 var lag = position.coords.longitude; //經(jīng)度 alert('緯度:'+lat+',經(jīng)度:'+lag); }
利用百度地圖和谷歌地圖接口獲取用戶地址
上面我們了解了html5的geolocation可以獲取用戶的經(jīng)緯度,那么我們要做的是需要把抽象的經(jīng)緯度轉(zhuǎn)成可讀的有意義的真正的用戶地理位置信息。幸運(yùn)的是百度地圖和谷歌地圖等提供了這方面的接口,我們只需要將html5獲取到的經(jīng)緯度信息傳給地圖接口,則會(huì)返回用戶所在的地理位置,包括省市區(qū)信息,甚至有街道、門牌號(hào)等詳細(xì)的地理位置信息。我們首先在頁面定義要展示地理位置的div,分別定義id#baidu_geo和id#google_geo。我們只需修改關(guān)鍵函數(shù)showposition()。先來看百度地圖接口交互,我們將經(jīng)緯度信息通過ajax方式發(fā)送給百度地圖接口,接口會(huì)返回相應(yīng)的省市區(qū)街道信息。百度地圖接口返回的是一串json數(shù)據(jù),我們可以根據(jù)需求將需要的信息展示給div#baidu_geo。注意這里用到了jquery庫,需要先加載jquery庫文件。
復(fù)制代碼代碼如下:
function showposition(position){ var latlon = position.coords.latitude+','+position.coords.longitude;
//baidu var url = http://api.map.baidu.com/geocoder/v2/?ak=c93b5178d7a8ebdb830b9b557abce78b&callback=renderreverse&location=+latlon+&output=json&pois=0; $.ajax({ type: get, datatype: jsonp, url: url, beforesend: function(){ $(#baidu_geo).html('正在定位...'); }, success: function (json) { if(json.status==0){ $(#baidu_geo).html(json.result.formatted_address); } }, error: function (xmlhttprequest, textstatus, errorthrown) { $(#baidu_geo).html(latlon+地址位置獲取失敗); } }); });
再來看谷歌地圖接口交互。同樣我們將經(jīng)緯度信息通過ajax方式發(fā)送給谷歌地圖接口,接口會(huì)返回相應(yīng)的省市區(qū)街道詳細(xì)信息。谷歌地圖接口返回的也是一串json數(shù)據(jù),這些json數(shù)據(jù)比百度地圖接口返回的要更詳細(xì),我們可以根據(jù)需求將需要的信息展示給div#google_geo。
復(fù)制代碼代碼如下:
function showposition(position){ var latlon = position.coords.latitude+','+position.coords.longitude;


網(wǎng)站關(guān)鍵詞排名到前3名SEO技巧!
網(wǎng)絡(luò)營銷的渠道和方法有哪些?
服裝網(wǎng)站對(duì)于設(shè)計(jì)要求嚴(yán)格嗎
人工智能軟件開發(fā)已到來,也是悶聲發(fā)財(cái)?shù)臋C(jī)會(huì)!
新零售到來,商家要抓住風(fēng)口
設(shè)計(jì)優(yōu)秀的網(wǎng)站有哪些優(yōu)點(diǎn)
百度更新之后文章質(zhì)量很重要
歐美網(wǎng)站有什么特點(diǎn)?