2009-09-02 7 views
5

Fondamentalement, chaque fois que quelqu'un ouvre ma carte (Google), je veux qu'il soit par défaut à leur emplacement approximatif.Centre Google Map Basé sur l'adresse IP géocodée

Existe-t-il un moyen facile de le faire avec l'API de Google ou dois-je écrire un code personnalisé (c'est une application basée sur python)?

Répondre

3

Découvrez http://www.ipinfodb.com/. Vous pouvez obtenir une valeur de latitude et de longitude en transmettant à leurs services une adresse IP. J'ai fait quelque chose récemment où j'ai créé un service simple qui a attrapé l'adresse IP actuelle et l'a passée au service ("api/location/city" est juste un service qui boucle le service d'ipinfodb). En utilisant 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 clé est cette ligne ici:

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

centre Juste mise au lat/lng du résultat de l'appel de service.

+0

Ce qui est bon, mais maintenant je dois pour comprendre comment obtenir l'IP. – Eeyore

0

Par the docs, juste map.setCenter(new GLatLng(37.4419, -122.1419), 13); ou d'autres coordonnées. Le faire dans le Javascript de la page est normalement préféré. Si vous voulez traduire une IP en lat et long, je ne pense pas que l'API Google supporte cela, mais il y a d'autres services web qui font, comme , hostip, et beaucoup, beaucoup d'autres. Je ne sais pas lequel (s) à recommander - essayer quelques-uns, serait ma suggestion!

0

Si l'utilisateur utilise FireFox 3.5/google gears, vous pouvez récupérer le lat et le lng depuis le navigateur lui-même. Vous trouverez les détails sur un autre stackoverflow post here

8

Vous pouvez utiliser Google API intégré ClientLocation objet de:

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

Pour une raison quelconque, cela ne fonctionne pas pour moi. – Eeyore

+0

Fonctionne pour moi comme le charme. – zgoda

+0

votre réponse est ce dont j'ai besoin. bon travail – Txugo

0
+0

Les réponses qui ne contiennent que des liens sont [considéré comme une mauvaise pratique] (http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers). Veuillez résumer le contenu ici (ne pas copier/coller) afin que la réponse puisse se suffire à elle-même. Si vous ne le faites pas, vous courez le risque que votre réponse soit supprimée, surtout si le lien meurt jamais. –

Questions connexes