2009-09-02 18 views
5

Básicamente cada vez que alguien abre mi mapa (Google) lo quiero de forma predeterminada a su ubicación aproximada.Centro Google Map Basado en IP geocodificado

¿Hay alguna manera fácil de hacerlo con la API de Google o tengo que escribir un código personalizado (esta es una aplicación basada en Python)?

Respuesta

3

Consulte http://www.ipinfodb.com/. Puede obtener un valor de latitud y longitud al pasar sus servicios una dirección IP. Hice algo recientemente donde creé un servicio simple que tomaba la dirección IP actual y luego la pasaba al servicio ("api/location/city" es solo un servicio que encrespa el servicio ipinfodb). Usando 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"); 

La clave aquí es esta línea:

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

sólo la creación del centro a la LAT/LNG del resultado de la llamada de servicio.

+0

Esto es bueno, pero ahora necesito para averiguar cómo obtener la IP. – Eeyore

0

Por the docs, solo map.setCenter(new GLatLng(37.4419, -122.1419), 13); o cualquier otra cosa. Normalmente es preferible hacerlo en el Javascript de la página.

Si se refiere a la traducción de una dirección IP a lat y largo, no me parece compatible con la API de Google que, pero hay otros servicios web que hacen, como , hostip, y muchos, muchos otros. No sé cuál recomendar, ¡prueba algunos, sería mi sugerencia!

0

Si el usuario usa FireFox 3.5/google gears, puede recuperar el lat y lng del navegador. Encontrará información detallada sobre otra stackoverflow post here

8

Se puede utilizar de Google API incorporado ClientLocation objeto:

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

Por alguna razón, no funciona para mí. – Eeyore

+0

Funciona para mí como el encanto. – zgoda

+0

tu respuesta es lo que necesito. buen trabajo – Txugo

0

IP API de geocodificación de direcciones de Google Maps: http://web3o.blogspot.com/2011/06/ip-address-geocoding-api-for-google.html

+0

Las respuestas que solo contienen enlaces son [consideradas malas prácticas] (http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers). Resuma el contenido aquí (no copie/pegue) para que la respuesta pueda ser independiente. Si no lo hace, corre el riesgo de que su respuesta sea eliminada, especialmente si el enlace alguna vez muere. –