2012-06-14 17 views
25

Używam Google Maps API. Używam poniższego kodu, aby uzyskać współrzędne znacznika.Uzyskiwanie współrzędnych znacznika w Google Maps API

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

Wszystko działa dobrze z aplikacją, którą zbudowałem przy użyciu Map Google. Ale przetestowałem to dzisiaj i mam problemy z uzyskaniem prawidłowych współrzędnych. Tylko po to, by odkryć, że powyższy kod staje się niezdefiniowany. Po konsolecie console.log (homeMarker.getPosition()) odkryłem, że są to zmienne, które wykorzystali dla współrzędnych.

var lat = homeMarker.getPosition().ab; 
var lng = homeMarker.getPosition().cb; 

Nie będę pytać, dlaczego Mapy Google działają w ten sposób, ale można je również uwzględnić w odpowiedzi. Moje pytanie brzmi: jak prawidłowo uzyskać współrzędne bez zmiany kodu za każdym razem mapy google zmieniają zmienne, których używają.

Odpowiedz

2

jeszcze jedno alternatywne opcje

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); 

i plik HTML

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

google.maps.event.addListener (myMarker, 'dragend', function (EVT) {.. }); To powoduje wyjątek – rajkiran

2

Ponadto, można wyświetlić bieżącą pozycję „drag” słuchacza i zapisać go na widocznym lub ukrytym polu. Może być również konieczne zapisanie zoomu. Oto kopia & pastę z narzędzia pracy:

  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()); 

       } 
      );     
      } 
Powiązane problemy