170424-html-地理定位

Javascript API, 不是真正意義上html5的一部分,是w3c規(guī)范。幾乎所有現(xiàn)代桌面和移動瀏覽器都支持地理定位。地理定位只關(guān)注你的全球位置信息,而Google Map則提供了一個javascript庫耗溜,允許你訪問所有g(shù)oogle map的功能。Google map api 提供了一種便捷的方法來顯示用戶的位置省容。

地理定位如何確定你的位置:

1. GPS

利用衛(wèi)星提供精確位置信息抖拴,包括高度、速度腥椒、朝向信息(必須室外)

2. IP

使用外部數(shù)據(jù)庫將IP映射到一個物理地址阿宅,不過通常會解析為其他位置,比如你ISP本地分局的位置笼蛛。這種方法在城市級(甚至街區(qū)級)可靠洒放。

3. 蜂窩電話

蜂窩電話三角定位根據(jù)你和其他一個或多個蜂窩電話基站距離來確定(室內(nèi)可用)。一般比較精確滨砍,比GPS速度更快往湿,但如何附近只有一個基站,結(jié)果可能不精確

4. WIFI

通過一個或多個wifi接入點(diǎn)完成定位惋戏,精確领追、室內(nèi)可用、速度快响逢。但要求相對處于靜態(tài)绒窑。?舔亭?些膨?為什么可以用wifi wifi不是ip嗎 ip不是不準(zhǔn)嗎?


3個API

getCurrentPosition(successHandler, errorHandler, positionOptions)

如果成功處理程序钦铺,successHandler會傳入一個Position對象

errorHandler見實例

positionOptions調(diào)整定位行為 默認(rèn)參數(shù)為

{

enableHighAccuracy: false,//j即使是true也不能保證一定是高精度的

timeout: infinity,//超過指定毫秒數(shù)調(diào)用錯誤處理函數(shù)

maximumAge: 0//指定多長時間會重新獲取位置订雾, 為零的話就等于不使用緩存

}

watchPosition(successHandler, errorHandler, positionOptions)

return watchId

監(jiān)視移動,并在位置發(fā)生改變時報告位置职抡,傳遞一個成功處理程序給它,他將重復(fù)調(diào)用误甚。直至使用clearWatch將它清除缚甩。

positionOptions調(diào)整定位行為 默認(rèn)參數(shù)等同getCurrentPosiition

clearWatch(watchId)


對象

Position

有兩個屬性coords和timestamp

Coodinates

coords的值谱净, 包含latitude, longitude, accuracy???f, (前三個屬性必有擅威,后幾個看設(shè)備支持程度)altitude, altitudeAccuracy, heading, speed


實例



my.js

window.onload =? getMyLocation;

function getMyLocation(){

if(navigator.geolocation){

// navigator.geolocation.getCurrentPosition(displayLocation,displayErrorInfo);

var watchBtn = document.getElementById("watch");

watchBtn.onclick = watchLocation;

var clearWatchBtn = document.getElementById("clearWatch");

clearWatchBtn.onclick = clearWatch;

}

else{

alert("Oops..........");

}

}

function displayLocation(position){

var latitude = position.coords.latitude;

var longitude = position.coords.longitude;

var div = document.getElementById("location");

div.innerHTML = "...At latitude " + latitude + ", longitude " + longitude;

if(!map ){

showMap(position.coords);

}else{

scrollMapToPosition(position.coods);

}

}

function displayErrorInfo(error){

var errorTypes = {

0: "Unknown error",

1: "Permission denied",

2: "Position not available",

3: "Request time out;"

}

var errorMsg = errorTypes[error.code];

if(error.code === 0 || error.code === 2){

errorMsg =? errorMsg + " " + error.message;

}

var div = document.getElementById("location");

div.innerHTML = errorMsg;

}

var map;

var watchId = null;

function watchLocation(){

watchId = navigator.geolocation.watchPosition(displayLocation, displayErrorInfo);

}

function clearWatch(){

if(watchId){

navigator.geolocation.clearWatch(watchId);

watchId = null;

}

}

function showMap(coords){

var googleLatAndLong = new google.maps.LatLng(coords.latitude,coords.longitude);

var mapOptions = {

zoom: 10,

center: googleLatAndLong,

mapTypeId: google.maps.MapTypeId.ROADMAP

};

var mapDiv = document.getElementById("map");

map = new google.maps.Map(mapDiv, mapOptions);

var title= "Your Location";

var content = "You are here " + coords.latitude + ", " + coords.longitude;

addMarker(map, googleLatAndLong, title, content);

}

function scrollMapToPosition(coords){

var latlong = new google.maps.LatLng(coords.latitude, coords.longitude);

map.panTo(latlong);

addMarker(map, latlong, "Your new position", "You moved to latitude " + coords.latitude + " longitude "+ coords.longitude );

}

function addMarker(map, latlong, title, content){

var markerOptions = {

position: latlong,

map: map,

title: title,

clickable: true

};

var marker =? new google.maps.Marker(markerOptions);

var infoWindowOptions = {

content: content,

position: latlong

};

var infoWindow = new google.maps.InfoWindow(infoWindowOptions);

google.maps.event.addListener(marker, "click", function(){

infoWindow.open(map);

});

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末壕探,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子郊丛,更是在濱河造成了極大的恐慌李请,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厉熟,死亡現(xiàn)場離奇詭異导盅,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)揍瑟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進(jìn)店門白翻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人绢片,你說我怎么就攤上這事滤馍。” “怎么了底循?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵巢株,是天一觀的道長。 經(jīng)常有香客問我熙涤,道長阁苞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任灭袁,我火速辦了婚禮猬错,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘茸歧。我一直安慰自己倦炒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布软瞎。 她就那樣靜靜地躺著逢唤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涤浇。 梳的紋絲不亂的頭發(fā)上鳖藕,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天,我揣著相機(jī)與錄音只锭,去河邊找鬼著恩。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的喉誊。 我是一名探鬼主播邀摆,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼伍茄!你這毒婦竟也來了栋盹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤敷矫,失蹤者是張志新(化名)和其女友劉穎例获,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體曹仗,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡榨汤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了整葡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片件余。...
    茶點(diǎn)故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖遭居,靈堂內(nèi)的尸體忽然破棺而出啼器,到底是詐尸還是另有隱情,我是刑警寧澤俱萍,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布端壳,位于F島的核電站,受9級特大地震影響枪蘑,放射性物質(zhì)發(fā)生泄漏损谦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一岳颇、第九天 我趴在偏房一處隱蔽的房頂上張望照捡。 院中可真熱鬧,春花似錦话侧、人聲如沸栗精。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽悲立。三九已至,卻和暖如春新博,著一層夾襖步出監(jiān)牢的瞬間薪夕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工赫悄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留原献,地道東北人馏慨。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像姑隅,于是被迫代替她去往敵國和親熏纯。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內(nèi)容