html5中地理位置定位api接口開發應用小結_HTML5教程
推薦:html5播放視頻且動態截圖實現步驟與代碼(支持safari其他未測試)html5播放視頻且動態截圖,很時尚且炫酷的一項功能,暫不支持chrom ,支持safari其他未測試,有需要了解的朋友可以適當參考下
地理位置定位的幾種方式:IP地址,GPS,Wifi,GSM/CDMA地理位置獲取流程:
1、用戶打開需要獲取地理位置的web應用。
2、應用向瀏覽器請求地理位置,瀏覽器彈出詢問,詢問用戶是否共享地理位置。
3、假設用戶允許,瀏覽器從設別查詢相關信息。
4、瀏覽器將相關信息發送到一個信任的位置服務器,服務器返回具體的地理位置。
HTML5地理地位的實現:
1. 實現基于瀏覽器(無需后端支持)獲取用戶的地理位置技術
2. 精確定位用戶的地理位置( 精度最高達10m之內,依賴設備 )
3. 持續追蹤用戶的地理位置
4. 與 Google Map、或者 Baidu Map 交互呈現位置信息
Geolocation API 用于將用戶當前地理位置信息共享給信任的站點,這涉及用戶的隱私安全問題,所以當一個站點需要獲取用戶的當前地理位置,瀏覽器會提示用戶是“允許” or “拒絕”。
先看看哪些瀏覽器支持Geolocation API:
IE9.0+、FF3.5+、Safari5.0+、Chrome5.0+、Opera10.6+、IPhone3.0+、Android2.0+
Geolocation API存在于navigator對象中,只包含3個方法:
復制代碼 代碼如下:www.wf0088.com
1、getCurrentPosition //當前位置
2、watchPosition //監視位置
3、clearWatch //清除監視
navigator.geolocation.getCurrentPosition( … , function(error){
switch(error.code){
case error.TIMEOUT :
alert( " 連接超時,請重試 " );
break;
case error.PERMISSION_DENIED :
alert( " 您拒絕了使用位置共享服務,查詢已取消 " );
break;
case error.POSITION_UNAVAILABLE :
alert( " ,抱歉,暫時無法為您所在的星球提供位置服務 " );
break;
}
});
watchPosition像一個追蹤器與clearWatch成對。
watchPosition與clearWatch有點像setInterval和clearInterval的工作方式。
var watchPositionId = navigator.geolocation.watchPosition(success_callback, error_callback, options);
navigator.geolocation.clearWatch(watchPositionId );
HTML 5提供了地理位置等一系列API可以給用戶使用,方便用戶制作LBS的地理應用,首先在支持HTML 5的瀏覽器中,當開啟API時,會詢問是否用戶同意使用api,否則不會開啟的,保證安全。
1、開啟,判斷是否瀏覽器支持LBS api
復制代碼 代碼如下:www.wf0088.com
function isGeolocationAPIAvailable()
{
var location = "No, Geolocation is not supported by this browser.";
if (window.navigator.geolocation) {
location = "Yes, Geolocation is supported by this browser.";
}
alert(location);
}
上面的例子中,還在displayError方法中,捕捉了異常;
2、獲得用戶的地理位置
這個使用getCurrentPosition就可以了;
復制代碼 代碼如下:www.wf0088.com
function requestPosition() {
if (nav == null) {
nav = window.navigator;
}
if (nav != null) {
var geoloc = nav.geolocation;
if (geoloc != null) {
geoloc.getCurrentPosition(successCallback);
}
else {
alert("Geolocation API is not supported in your browser");
}
}
else {
alert("Navigator is not found");
}
}
當獲得地理位置成功后,會產生一個回調方法了,處理返回的結果,
復制代碼 代碼如下:www.wf0088.com
function setLocation(val, e) {
document.getElementById(e).value = val;
}
function successCallback(position)
{
setLocation(position.coords.latitude, "latitude"); setLocation(position.coords.longitude, "longitude");
}
3、一個很常見的問題,是如何跟蹤用戶不斷變化的地理位置,這里小結下其中用到的兩個api
1 watchPosition
例子如下:
復制代碼 代碼如下:www.wf0088.com
function listenForPositionUpdates() {
if (nav == null) {
nav = window.navigator;
}
if (nav != null) {
var geoloc = nav.geolocation;
if (geoloc != null) {
watchID = geoloc.watchPosition(successCallback);
} else {
alert("Geolocation API is not supported in your browser");
}
} else {
alert("Navigator is not found");
}
}
然后在successCallback中,就可以設置顯示最新的地理位置:
復制代碼 代碼如下:www.wf0088.com
function successCallback(position){
setText(position.coords.latitude, "latitude"); setText(position.coords.longitude, "longitude");
}
如果不希望實時跟蹤,則可以取消之:
function clearWatch(watchID) {
window.navigator.geolocation.clearWatch(watchID);
}
4、如何處理異常
當遇到異常時,可以捕捉之:
復制代碼 代碼如下:www.wf0088.com
if (geoloc != null) {
geoloc.getCurrentPosition(successCallback, errorCallback);
}
function errorCallback(error) {
var message = "";
switch (error.code) {
case error.PERMISSION_DENIED:
message = "This website does not have permission to use "
+ "the Geolocation API";
break;
case error.POSITION_UNAVAILABLE:
message = "The current position could not be determined.";
break;
case error.PERMISSION_DENIED_TIMEOUT:
message = "The current position could not be determined "
+ "within the specified timeout period.";
break;
}
if (message == "") {
var strErrorCode = error.code.toString();
message = "The position could not be determined due to "
+ "an unknown error (Code: " + strErrorCode + ").";
}
alert(message);
}
5、 在google 地圖上顯示位置(前提是有google map api等設置好)
復制代碼 代碼如下:www.wf0088.com
function getCurrentLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showMyPosition,showError);
}
else
{
alert("No, Geolocation API is not supported by this browser.");
}
}
function showMyPosition(position)
{
var coordinates=position.coords.latitude+","+position.coords.longitude;
var map_url="http://maps.googleapis.com/maps/api/staticmap?center="
+coordinates+"&zoom=14&size=300x300&sensor=false";
document.getElementById("googlemap").innerHTML="<img src='"+map_url+"' />";
}
function showError(error)
{
switch(error.code)
{
case error.PERMISSION_DENIED:
alert("This website does not have permission to use the Geolocation API")
break;
case error.POSITION_UNAVAILABLE:
alert("The current position could not be determined.")
break;
case error.TIMEOUT:
alert("The current position could not be determined within the specified time out period.")
break;
case error.UNKNOWN_ERROR:
alert("The position could not be determined due to an unknown error.")
break;
}
}
分享:html5指南-7.geolocation結合google maps開發一個小的應用今天我們將把html5的geolocation結合google maps開發一個小的應用,感興趣的朋友可以了解下,如有不足,愿大俠給予指教
相關HTML5教程:
- 只要五步 就可以用HTML5/CSS3快速制作便簽貼特效(圖)
- 網易微博Web App用HTML5開發的過程介紹
- HTML5 對各個標簽的定義與規定:body的介紹
- 關于HTML5的安全問題開發人員需要牢記的
- 關于HTML5的22個初級技巧(圖文教程)
- 開發人員所需要知道的HTML5性能分析面面觀
- HTML5 Web Database 數據庫的SQL語句的使用方法
- HTML5實踐-圖片設置成灰度圖
- HTML5安全介紹之內容安全策略(CSP)簡介
- HTML5 Web存儲方式的localStorage和sessionStorage進行數據本地存儲案例應用
- Bootstrap 學習分享
- input元素的url類型和email類型簡介
HTML5教程Rss訂閱Div+Css教程搜索
HTML5教程推薦
- HTML5中微數據概述及在搜索引擎中的使用舉例
- html5構建觸屏網站之網站尺寸探討
- html5 Canvas畫圖教程(11)—使用lineTo/arc/bezierCurveTo畫橢圓形
- html5-Canvas可以在web中繪制各種圖形
- HTML中fieldset標簽概述及使用方法
- 突襲HTML5之Javascript API擴展5—其他擴展(應用緩存/服務端消息/桌面通知)
- HTML5使用ApplicationCache接口實現離線緩存技術解決離線難題
- html5 Canvas畫圖教程(10)—把面拆成線條模擬出圓角矩形
- HTML5 對各個標簽的定義與規定:body的介紹
- HTML5 新舊語法標記對我們有什么好處
- 相關鏈接:
- 教程說明:
HTML5教程-html5中地理位置定位api接口開發應用小結。