2009-09-02 20 views
5

Fondamentalmente ogni qualvolta qualcuno apre la mia mappa (Google), voglio che sia predefinita nella loro posizione approssimativa.Centro Google Map Basato su geocodificato IP

C'è un modo semplice per farlo con l'API di Google o devo scrivere un codice personalizzato (questa è un'applicazione basata su Python)?

risposta

3

Check out http://www.ipinfodb.com/. È possibile ottenere un valore di latitudine e longitudine passando i loro servizi un indirizzo IP. Ho fatto qualcosa di recente dove ho creato un servizio semplice che ha afferrato l'indirizzo IP corrente e poi lo ha passato al servizio ("api/location/city" è solo un servizio che arriccia il servizio ipinfodb). Utilizzando 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 chiave qui è questa linea:

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

Basta impostare il centro alla lat/lng del risultato della chiamata di servizio.

+0

Questo è un bene, ma ora ho bisogno per capire come ottenere l'IP. – Eeyore

0

Per the docs, solo map.setCenter(new GLatLng(37.4419, -122.1419), 13); o qualsiasi altra coordinata. In genere, è preferibile farlo nel Javascript della pagina.

Se si intende tradurre un indirizzo IP a lat e long, non penso che l'API di Google lo supporti, ma ci sono altri servizi Web che lo fanno, come ad esempio , hostip e molti, molti altri. Non so quale/i consiglio/i - provare alcuni, sarebbe il mio suggerimento!

0

Se l'utente utilizza FireFox 3.5/google gears, è possibile recuperare lat e lng dal browser stesso. Troverete i dettagli su un altro stackoverflow post here

8

È possibile utilizzare Google API built-in ClientLocation oggetto:

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

Per qualche motivo non funziona per me. – Eeyore

+0

Funziona per me come un incanto. – zgoda

+0

la tua risposta è ciò di cui ho bisogno. buon lavoro – Txugo

0
+0

Le risposte che contengono solo link sono [considerate pratiche sbagliate] (http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers). Si prega di riassumere il contenuto qui (non copiare/incollare) in modo che la risposta possa reggersi da sola. Se non lo fai, corri il rischio che la tua risposta venga rimossa, soprattutto se il collegamento muore mai. –