2012-06-14 6 views
25

Ich verwende Google Maps API. Und ich verwende den folgenden Code, um die Koordinaten des Markers zu erhalten.Ermitteln der Koordinaten des Markers in Google Maps API

var lat = homeMarker.getPosition().$a; 
var lng = homeMarker.getPosition().ab; 

Alles funktioniert gut mit der App, die ich mit Google Maps erstellt habe. Aber ich habe es heute getestet und habe Probleme, die richtigen Koordinaten zu bekommen. Nur um festzustellen, dass der obige Code undefiniert wird. Nachdem ich console.log (homeMarker.getPosition()) habe ich festgestellt, dass dies jetzt die Variablen, die sie für die Koordinaten verwendet haben.

Ich werde nicht fragen, warum Google Maps auf diese Weise handelt, aber Sie können es auch in Ihre Antwort aufnehmen. Meine Frage ist, wie bekomme ich richtig die Koordinaten, ohne meinen Code jedes Mal zu ändern, wenn Google Maps die Variablen ändert, die sie verwenden.

Antwort

2

Eine weitere alternative Optionen

var map = new google.maps.Map(document.getElementById('map_canvas'), { 
    zoom: 1, 
    center: new google.maps.LatLng(35.137879, -82.836914), 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
}); 

var myMarker = new google.maps.Marker({ 
    position: new google.maps.LatLng(47.651968, 9.478485), 
    draggable: true 
}); 

google.maps.event.addListener(myMarker, 'dragend', function (evt) { 
    document.getElementById('current').innerHTML = '<p>Marker dropped: Current Lat: ' + evt.latLng.lat().toFixed(3) + ' Current Lng: ' + evt.latLng.lng().toFixed(3) + '</p>'; 
}); 

google.maps.event.addListener(myMarker, 'dragstart', function (evt) { 
    document.getElementById('current').innerHTML = '<p>Currently dragging marker...</p>'; 
}); 

map.setCenter(myMarker.position); 
myMarker.setMap(map); 

und html-Datei

<body> 
    <section> 
     <div id='map_canvas'></div> 
     <div id="current">Nothing yet...</div> 
    </section> 
</body> 
+0

google.maps.event.addListener (MyMarker, 'dragend', function (evt) {.. }); Dies löst Ausnahme aus – rajkiran

2

Auch können Sie auf aktuelle Position durch "drag" Hörer angezeigt werden und es zu sichtbaren oder versteckten Feld schreiben. Möglicherweise müssen Sie auch den Zoom speichern. Hier kopieren & Paste aus Arbeitswerkzeug:

  function map_init() { 
      var lt=48.451778; 
      var lg=31.646305; 

      var myLatlng = new google.maps.LatLng(lt,lg); 
      var mapOptions = { 
       center: new google.maps.LatLng(lt,lg), 
       zoom: 6, 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
      }; 

      var map = new google.maps.Map(document.getElementById('map'),mapOptions); 
      var marker = new google.maps.Marker({ 
       position:myLatlng, 
       map:map, 
       draggable:true 
      }); 

      google.maps.event.addListener(
       marker, 
       'drag', 
       function() { 
        document.getElementById('lat1').innerHTML = marker.position.lat().toFixed(6); 
        document.getElementById('lng1').innerHTML = marker.position.lng().toFixed(6); 
        document.getElementById('zoom').innerHTML = mapObject.getZoom(); 

        // Dynamically show it somewhere if needed 
        $(".x").text(marker.position.lat().toFixed(6)); 
        $(".y").text(marker.position.lng().toFixed(6)); 
        $(".z").text(map.getZoom()); 

       } 
      );     
      } 
Verwandte Themen