2010-01-13 37 views
8

我試圖使用google.loader.ClientLocation以及地圖API來獲取訪問者的位置並在其上居中放置地圖。以下對我來說很好(在Safari,Firefox和Chrome上),但我需要測試它的一個朋友(在Safari和Firefox中)只看到一個帶有Google徽標的白色框。獲取用戶位置,google.loader.ClientLocation爲我工作但不是其他人

<script type="text/javascript" src="http://www.google.com/jsapi?key=MykeyHere"></script> 

    <script type="text/javascript"> 
    google.load("maps", "2"); 
    </script> 

    <script type="text/javascript"> 

     function initialize() { 
     if (GBrowserIsCompatible()) { 
      var map = new GMap2(document.getElementById("local_map")); 
    map.setMapType(G_PHYSICAL_MAP); 
    map.setCenter(new GLatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude), 15); 
      // map.setCenter(new GLatLng(54.5975, -5.920278), 15); 
      map.setUIToDefault(); 

     } 

     </script> 

任何想法可能會出錯?該網站位於http://www.chris-armstrong.com/ticktalk(地圖接近底部)

回答

14

Google ClientLocation使用IP地址地理位置。有幾個IP地址地理定位提供商(右側邊欄中的相關問題會給你幾個),並且它們給不同的用戶提供不同的結果。 Google ClientLocation無法找到所有人,也不會總是給出與某些競爭對手一樣精確或準確的答案。

my test page上,例如,我使用Google ClientLocation和IPInfoDB,而Google ClientLocation在我家目前找不到我,而IPInfoDB認爲我在Sunnyvale而不是Berkeley。你可能會發現一個提供者比其他提供者更好(尤其是如果你爲它的數據庫付錢的話),但是我懷疑如果你確實需要它,最健壯的方法是使用幾個,並且希望至少有一個會得到結果。您應該知道,IP地理位置不會總是適用於全部用戶(例如匿名代理後面的用戶,永遠不會以這種方式定位)。

,如果你想要更精確的位置,你可以使用JavaScript API來向瀏覽器詢問用戶的確切位置。在支持的瀏覽器上,用戶將收到一個小彈出窗口,詢問他們的許可,然後瀏覽器將使用GPS(例如iPhone上的Mobile Safari)或WiFi三角測量(Firefox 3.5+)來確定經度和緯度。你可以看到my test page的工作原理,並將其與IP地理位置進行比較。並非所有瀏覽器都支持W3C Geolocation API,但越來越多的瀏覽器支持。

+0

謝謝,基本上它不是一門精確的科學。 IP地址是獲取沒有GPS功能的位置的唯一途徑嗎? –

+0

@Chris,確切地說,它不是確切的。您可以使用Javascript W3C Geolocation API從瀏覽器(可能使用GPS或WiFi三角測量或其他方法,取決於瀏覽器和計算機)獲取更精確的位置。我已經添加了一些鏈接到我的答案,以提供更多的上下文。 – npdoty

+0

我得到'其實,我不能以這種方式猜測你的位置。'當訪問您的測試頁面時。 –

相關問題