2009-09-02 18 views
5

Grundsätzlich, wenn jemand meine (Google) Karte öffnet, möchte ich, dass sie standardmäßig ihren ungefähren Standort hat.Centre Google Map Basierend auf geocodierten IP

Gibt es einen einfachen Weg, um es mit Google API zu tun, oder muss ich einen benutzerdefinierten Code schreiben (das ist Python-basierte App)?

Antwort

3

Auschecken http://www.ipinfodb.com/. Sie können einen Breiten- und Längengradwert erhalten, indem Sie ihren Diensten eine IP-Adresse übergeben. Ich habe kürzlich etwas gemacht, wo ich einen einfachen Dienst erstellt habe, der die aktuelle IP-Adresse erfasst und dann an den Dienst weitergeleitet hat ("api/location/city" ist nur ein Dienst, der den ipinfodb-Dienst lockt). Mit 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"); 

Der Schlüssel hier ist diese Zeile:

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

Nur die Einstellung der Mitte zum lat/lng des Ergebnisses des Serviceabrufs.

+0

Das ist gut, aber jetzt brauche ich um herauszufinden, wie man die IP bekommt. – Eeyore

0

Pro the docs, nur map.setCenter(new GLatLng(37.4419, -122.1419), 13); oder was auch immer andere Koordinaten. Es wird normalerweise im Javascript der Seite bevorzugt.

Wenn Sie meinen, eine IP zu lat und long zu übersetzen, glaube ich nicht, dass die Google API das unterstützt, aber es gibt andere Webdienste wie , hostip und viele, viele andere. Ich weiß nicht, welche zu empfehlen - probieren Sie ein paar aus, wäre mein Vorschlag!

0

Wenn der Benutzer FireFox 3.5/google gears verwendet, können Sie lat und lng vom Browser selbst abrufen. Sie finden Details auf einem anderen stackoverflow post here

8

Sie die Google-API verwenden können, gebaut in ClientLocation Objekt:

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

Aus irgendeinem Grund funktioniert es nicht für mich. – Eeyore

+0

Funktioniert für mich wie Charme. – zgoda

+0

Ihre Antwort ist was ich brauche. gute Arbeit – Txugo

0
+0

Antworten, die nur Links enthalten sind [als schlechte Praxis angesehen] (http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers). Bitte fassen Sie den Inhalt hier zusammen (nicht kopieren/einfügen), damit die Antwort für sich alleine stehen kann. Wenn Sie nicht Gefahr laufen, dass Ihre Antwort entfernt wird, besonders wenn die Verbindung jemals stirbt. –