2010-09-03 84 views
8

我想知道地理位置在Google Chrome或Firefox等網絡瀏覽器中的工作方式?網絡瀏覽器地理位置如何工作?

我可以訪問這個網站http://html5demos.com/geo,當我允許瀏覽器發送我的位置時,它會顯示我的當前位置。

但是,當我將該URL發送給我的朋友測試它時,它並不適用於所有人。地理位置如何工作以及如何實施地理位置以獲取正確的位置?

+0

你想它去努力一個網站?什麼平臺?你只想向用戶展示他在哪裏?或者你想顯示不同的位置? – Steven 2010-09-03 07:50:22

+0

-1不使用搜索功能:http://stackoverflow.com/questions/2248404/about-geolocation-in-html-5 – BeRecursive 2010-09-03 07:53:14

+0

5年後,一般你需要「允許」這一點。當然,這並不總是準確的,並且不會顯示「您的」位置,而是顯示瀏覽器主機的位置。所以VNC/RDP/SSH(w/X)會在你和你的「透露」位置之間留下一些距離。如果您的瀏覽器的主機具有GPS功能,代理服務器可能不會再有。同一子網上的智能手機(即公共和私人ips可用於後端搜索模式)可能會背叛你。 – mckenzm 2015-07-24 20:46:15

回答

2

重新它是如何工作的:Wikipedia article討論了幾種技術(IP地址的位置,手機和WiFi三角測量,全球定位系統)。

在檢索地理位置數據之前,HTML5的實現需要用戶同意瀏覽器支持(FF 3.6,Opera 10.60,Chrome 4?5?,IE可能有一天)

至於如何實現它,code of the demo you link to似乎在MIT License之下,它基本上說「只要你把結果代碼保存在許可證下,你可以做任何事情」。所以你可以將該代碼作爲基礎來構建。

+0

我從PC登錄,在我的大學使用代理連接到互聯網。它如何告訴我幾乎精確的位置,而我的電腦沒有GPS功能? – SMUsamaShah 2011-10-03 10:33:36

+1

LifeH2O:引用自己:「維基百科文章討論了幾種技術(** IP地址位置**)」 - 也許代理服務器在物理上離你很近?這「幾乎確切」是什麼?準確度取決於 - 在大學裏,「我的」位置總是離開100英里,因爲那是代理的位置(是的,不是最佳的網絡設計;但是他們確實具有*位置校正到城市街區)。 – Piskvor 2011-10-03 10:59:15

5

當你訪問一個位置感知 網站,Firefox會詢問你是否 想分享你的位置。

如果您同意,Firefox收集關於附近無線 接入點和您的計算機的IP 地址的信息 。然後,Firefox將此 信息發送到默認地理位置 服務提供商,Google位置 服務,以獲得您的 位置的估計值。該位置估計爲 ,然後與請求的 網站共享。

http://www.mozilla.com/en-US/firefox/geolocation/

所以,這取決於他們所使用的瀏覽器和一些運氣:-)

+0

我從電腦登錄,在我的大學使用代理連接到互聯網。它如何告訴我幾乎精確的位置,而我的電腦沒有GPS功能? – SMUsamaShah 2011-10-03 10:33:45

+0

@ LifeH2O http://security.stackexchange.com/questions/16253/how-does-google-maps-know-where-i-am-when-im-using-a-vpn – 2014-06-02 15:40:56

0

事情真的取決於您正在使用的網站和您的瀏覽器的實施。

最簡單的方法,它不需要任何客戶端擴展是網頁獲取您的IP地址,並使用任何「IP到地理定位」服務來做一個questimate你目前的位置。

第二種選擇是瀏覽器有一個擴展,可以將您的座標通告給網絡服務器。在這些情況下,客戶端的這些信息可以從ip地址服務或連接到您計算機的gps單元中獲取。例如,諾基亞N900和內置瀏覽器MicroB都有這種擴展。

1

信息和實施例從W3C Geolocation API Specification

地理位置API限定了高級別接口僅與設備託管 實現,如緯度和經度相關聯的位置信息 。不管底層位置信息來源如何,API本身都是 。常用的位置信息源包括全球定位系統 (GPS)以及從諸如IP地址, RFID,WiFi和藍牙MAC地址以及GSM/CDMA小區ID等網絡信號以及用戶輸入 推斷出的位置。無法保證API返回設備的實際位置 。

您可以實現這樣說:

(單次定位請求)

function showMap(position) { 
    // Show a map centered at (position.coords.latitude, position.coords.longitude). 
} 

// One-shot position request. 
navigator.geolocation.getCurrentPosition(showMap); 

(請求重複位置更新)

function scrollMap(position) { 
    // Scrolls the map so that it is centered at (position.coords.latitude, position.coords.longitude). 
} 

// Request repeated updates. 
var watchId = navigator.geolocation.watchPosition(scrollMap); 

function buttonClickHandler() { 
    // Cancel the updates when the user clicks a button. 
    navigator.geolocation.clearWatch(watchId); 
} 
相關問題