Вот демоверсия JSFiddle .В Google Maps API V3 довольно просто отслеживать широту и долготу перетаскиваемого маркера.Давайте начнем со следующих HTML и CSS в качестве нашей базы.
<div id='map_canvas'></div>
<div id="current">Nothing yet...</div>
#map_canvas{
width: 400px;
height: 300px;
}
#current{
padding-top: 25px;
}
Вот наш начальный JavaScript, инициализирующий карту Google.Мы создаем маркер, который мы хотим перетащить, и устанавливаем для его свойства draggable значение true.Конечно, имейте в виду, что оно должно быть присоединено к событию onload вашего окна, чтобы оно было загружено, но я пропущу код:
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
});
Здесь мы прикрепляем два события dragstart
для отслеживанияначало перетаскивания и dragend
для перетаскивания, когда маркер перестает перетаскиваться, и способ его прикрепления заключается в использовании google.maps.event.addListener
.Что мы делаем здесь, это устанавливаем содержимое div current
, когда маркер перетаскивается, а затем устанавливаем его широту и долготу, когда перетаскивание останавливается.У события мыши Google есть имя свойства «latlng», которое возвращает объект «google.maps.LatLng» при срабатывании события.Таким образом, то, что мы делаем здесь, в основном использует идентификатор для этого слушателя, который возвращается google.maps.event.addListener
и получает свойство latLng
для извлечения текущей позиции драже.Как только мы получим значение Lat Lng, когда перетаскивание будет прекращено, мы отобразим его в вашем current
div:
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);
Дайте мне знать, если у вас есть какие-либо вопросы относительно моего ответа.