摘要:文章主要介紹了利用HTML5提供的Geolocation類和相關(guān)API實現(xiàn)地理信息定位。介紹了HTML5標(biāo)準(zhǔn)中的有關(guān)地理定位訪問的API及方法,以一次完整的地理信息定位的過程為場景闡述HTML5如何實現(xiàn)地理信息定位。
關(guān)鍵詞:HTML5 " Geolocation
一、應(yīng)用前景
隨著智能手機的發(fā)展,Android平臺手機、iOS平臺手機、WindowsPhone平臺手機不斷推出各種應(yīng)用程序,瀏覽器的競爭也日趨白熱化,基于Webkit內(nèi)核的瀏覽器成了主要發(fā)展方向。
基于Webkit內(nèi)核瀏覽器的最大特點,就是支持HTML5和CSS3標(biāo)準(zhǔn),基于HTML5、CSS3和JavaScript的移動應(yīng)用程序?qū)⑹俏磥淼陌l(fā)展趨勢。
現(xiàn)在,很多瀏覽器中都實現(xiàn)了一種能實時獲取當(dāng)前地圖的位置信息,再利用獲取的地理位置衍生出相關(guān)的服務(wù)推送,以此來擴(kuò)展軟件的功能。
二、Geolocation
嚴(yán)格來說,Geolocation API不屬于HTML5的標(biāo)準(zhǔn)規(guī)范,但是其API接口使它能讓瀏覽器或者移動設(shè)備的瀏覽器獲取用戶的當(dāng)前位置信息。由于地理定位涉及用戶個人隱私信息,因此在人們在第一次使用Geolocation地理定位功能的頁面,都需要用戶確認(rèn)是否允許Web應(yīng)用程序獲取自己的位置信息。目前,Geolocation API已經(jīng)得到大部分瀏覽器的支持,甚至在移動設(shè)備領(lǐng)域的瀏覽器都能很好地支持該HTML5特性。
Geolocation API是通過window.navigator.geolocation獲得對地理定位的訪問,獲得對象有三種方法:①get Current Position( " " " " );②watch Position( " " " " );③clear Watch "( " " " " " ")。
watch Position( " " " " ")和clear Watch
( " " " ")是一對方法,watchPosition方法會返回一個唯一標(biāo)識,clearWatch可通過這個唯一標(biāo)識清除watchPosition方法的監(jiān)聽。
三、使用GoogleMaps追蹤位置應(yīng)用的實現(xiàn)
當(dāng)人們在移動過程中使用瀏覽器,并能精確判斷位置時,就能真實地感受到“追蹤位置”這一概念。如由Google Maps判定的最后五個位置被標(biāo)記于地圖上,當(dāng)用戶離開屏幕顯示的地圖區(qū)域時,地圖將以下一個點為中心展開。
我們在window.onload事件中完成Geolocation API的調(diào)用,其代碼如下:
Var watchID=navigator.geolocation.watch Position(moveMe,posError,{enableHighAccuracy:true});
真正的工作在函數(shù)moveMe( " )中進(jìn)行:
function moveMe(position){
latlng=new google.maps.LatLng(
position.coords.latitude,
position.coords.longtitude);
bounds=map.getBounds();
map.setZoom(16);
if(!bounds.contains(latlng)){
map.setCenter(latlng);}
if(marker.lengthgt;=maxMarkers){
m=marker.shift();
if(m){m.setMap();}}
marker.push(new google.maps.Marker({
position:latlng,map:map,
title:position.coords.accuracy+”m lat:”
+position.coords.latitude+” lon:“+
Position.coords.longtitude}));}
變量latlng被創(chuàng)建為Google Maps的LatLng對象,當(dāng)前坐標(biāo)被傳遞至此對象。若當(dāng)前位置不在顯示區(qū)域,地圖將重新圍繞當(dāng)前點展開。在腳本一開始,marker數(shù)組及變量maxMarkers都已經(jīng)被定義為全局變量,并被賦值為5。若marker數(shù)組包含多于5個元素,第一個元素將通過shift函數(shù)從數(shù)組中被移除,并通過調(diào)用setMap(),在不需要提供更多參考標(biāo)記的情況下從地圖中刪去。最后,數(shù)組中將添加一個標(biāo)記當(dāng)前位置的新marker對象。
(作者單位:江西旅游商貿(mào)職業(yè)學(xué)院)