2009-09-02 17 views

Odpowiedz

3

Zapoznaj się z http://www.ipinfodb.com/. Możesz uzyskać wartość szerokości i długości geograficznej, przekazując usługi swoim adresom IP. Zrobiłem ostatnio coś, co stworzyłem prostą usługę, która chwyciła aktualny adres IP, a następnie przekazała go do usługi ("api/location/city" to tylko usługa, która zwija usługę ipinfodb). JQuery:

$.get("api/location/city", null, function(data, textStatus) 
{   
    if (data != null) 
    { 
     if (data.Status == "OK") 
     { 
      var lat = parseFloat(data.Latitude); 
      var lng = parseFloat(data.Longitude); 

      $.setCenter(lat, lng, $.settings.defaultCityZoom); 

      manager = new MarkerManager(map, {trackMarkers : true }); 

      var e = $.createUserMarker(map.getCenter()); 
      e.bindInfoWindowHtml($("#marker-content-event").html()); 

      var m = []; 
      m.push(e); 

      // map.addOverlay(e); 
      manager.addMarkers(m, 10); 
      manager.refresh(); 
     } 
     else 
     { 
      $.setCenter($.settings.defaultLat, $.settings.defaultLng, $.settings.defaultZoom); 
     } 
    } 
}, "json"); 

Kluczem tutaj jest ta linia:

$.setCenter(lat, lng, $.settings.defaultCityZoom); 

Wystarczy ustawienie środka do lat/lng wyniku wezwania serwisowego.

+0

To jest dobre, ale teraz muszę dowiedzieć się, jak zdobyć IP. – Eeyore

0

Per the docs, tylko map.setCenter(new GLatLng(37.4419, -122.1419), 13); lub dowolne inne współrzędne. Zazwyczaj preferuje się to w JavaScript strony.

Jeśli chodzi o tłumaczenie adresu IP na długi i długi, nie sądzę, aby interfejs API Google go obsługuje, ale istnieją inne usługi internetowe, takie jak , hostip i wiele, wiele innych. Nie wiem, który (e) polecić - wypróbować kilka, byłby moją sugestią!

0

Jeśli użytkownik używa narzędzi FireFox 3.5/google, można pobrać pliki lat i lng z samej przeglądarki. Znajdziesz szczegóły dotyczące innego stackoverflow post here

8

Można używać Google API wbudowanej ClientLocation obiektu:

if (GBrowserIsCompatible()) 
{ 
    var map = new google.maps.Map2(document.getElementById("mapdiv")); 

    if (google.loader.ClientLocation) 
    {   
     var center = new google.maps.LatLng(
      google.loader.ClientLocation.latitude, 
      google.loader.ClientLocation.longitude 
     ); 
     var zoom = 8; 

     map.setCenter(center, zoom); 
    } 
} 
+0

Z jakiegoś powodu nie działa dla mnie. – Eeyore

+0

Działa dla mnie jak urok. – zgoda

+0

twoja odpowiedź jest tym, czego potrzebuję. dobra robota – Txugo

0
+0

Odpowiedzi, które zawierają tylko linki, są uważane za złe praktyki (http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers). Podsumuj zawartość tutaj (nie kopiuj/wklej), aby odpowiedź mogła być samodzielna. Jeśli nie, ryzykujesz usunięcie swojej odpowiedzi, zwłaszcza jeśli link kiedykolwiek umrze. –

Powiązane problemy