2010-01-13 7 views
8

Ziyaretçilerin konumunu almak ve haritada bir harita oluşturmak için google.loader.ClientLocation'ı harita api ile birlikte kullanmaya çalışıyorum. Aşağıdakiler benim için gayet iyi çalışıyor (Safari, Firefox ve Chrome'da), ancak test etmem gereken bir arkadaşım (Safari ve Firefox'ta) Google logosuyla sadece beyaz bir kutu görüyor.google.loader.ClientLocation ile kullanıcı konumunun benim için değil, başkaları için çalışıyor olması

<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> 

Herhangi bir fikir yanlış giden ne olabilir? Sitenin adresi http://www.chris-armstrong.com/ticktalk (harita alt taraftadır)

cevap

14

Google ClientLocation, IP adresi coğrafi konumunu kullanır. Orada çeşitli IP adresi konum belirleme sağlayıcıları var (sağdaki kenar çubuğundaki ilgili sorular size bunlardan birkaçını verecektir) ve farklı kullanıcılara farklı sonuçlar veriyor. Google ClientLocation herkesi bulamaz ve her zaman bazı rakipler kadar kesin veya doğru cevaplar vermez.

my test page'da, örneğin, Google ClientLocation ve IPInfoDB'u kullanıyorum ve Google ClientLocation beni şu anda evde bulamıyor, IPInfoDB ise Berkeley yerine Sunnyvale olduğumu düşünüyor. Bir sağlayıcının diğerlerinden daha iyi olduğunu fark edebilirsiniz (özellikle veritabanını ödediğinizde), fakat en sağlam yöntemin, gerçekten ihtiyacınız varsa, birkaçını kullanacağından ve en azından birinin sonuç alacağından şüpheleniyorum. . IP geolocation öğesinin her zaman kullanıcısı için her zaman çalışmayacağını bilmelisiniz ( kullanıcısı (örneğin anonimleştirme proxy'sinin arkasındakiler asla bu şekilde bulunmaz). Daha doğru bir yer istiyorsanız, kullanıcının tam konumu için tarayıcıdan bir Javascript API'si kullanabilirsiniz.

Desteklenen tarayıcılarda kullanıcı, izinlerini soran küçük bir pop-up alacak ve eğer verildiyse, tarayıcı enlem ve boylamı belirlemek için GPS'i (örneğin iPhone'daki Mobil Safari) veya WiFi triangülasyonunu (Firefox 3.5+) kullanacaktır. . Bunun, my test page üzerinde nasıl çalıştığını görebilir ve IP konum belirleme ile karşılaştırabilirsiniz. Tüm tarayıcılar W3C Geolocation API'u desteklemez, ancak büyüyen bir sayı yoktur.
+0

Teşekkürler, temel olarak tam bir bilim değildir. IP adresi, GPS özelliği olmayan bir konum elde etmenin tek yolu mı? –

+0

@ Chris, tam olarak, bu kesin değil. Tarayıcıdan daha kesin bir konum elde etmek için Javascript W3C Geolocation API'sini kullanabilirsiniz (tarayıcıya ve bilgisayara bağlı olarak GPS veya WiFi triangülasyonunu veya başka bir yöntemi kullanabilir). Daha fazla bağlam sağlamak için cevabımla bazı bağlantılar ekledim. – npdoty

+0

'Aslında, konumunuzu bu şekilde tahmin edemiyorum.' Test sayfanızı ziyaret ettiğinizde. –

İlgili konular