Текущая позиция маркера Google-карты неверна
Я использую google-map-marker (в dom-repeat) с событием: on-google-map-marker-dragend.
Я пытаюсь получить текущую позицию маркера после завершения перетаскивания, но я получаю только позицию маркера, где он был перемещен при перетаскивании до текущего перетаскивания.
<google-map zoom="15" id="map" style="height: 20em" api-key="[[apiKey]]" fit-to-markers>
<template is="dom-repeat" items="[[markers]]" as="mapMarker">
<google-map-marker on-google-map-marker-click="inform" on-google-map-marker-dragend="inform" click-events="true" draggable="true" drag-events="true" latitude="{{mapMarker.latitude}}" longitude="{{mapMarker.longitude}}">
</google-map-marker>
</template>
</google-map>
метод:
inform: function(event){
// this is not the current position after drag end...
console.log(event.model.mapMarker.latitude);
console.log(event.target.latitude);
this.$.userInformationLatitude.innerHTML = event.model.mapMarker.latitude;
this.$.userInformationLongitude.innerHTML = event.model.mapMarker.longitude;
}
Пример для лучшего понимания: я перетаскиваю маркер с широты:0 долготы:0 до Нью-Йорка, после завершения перетаскивания я получаю значения широты:0 долготы:0, а не долготы и широты Нью-Йорка.
2 ответа
Я использую наблюдателей, чтобы поймать / прочитать изменение положения маркера.
Вот пример Plunk, элемент my-marker_drag_catch:
//called on property this.marker_latitude change.
marker_latitudeChanged: function() {
console.log('marker_latitudeChanged');
if (this.marker_latitude) {
this.save_marker_data();
}
},
//called on property this.marker_latitude change.
marker_longitudeChanged: function() {
console.log('marker_longitudeChanged');
if (this.marker_longitude) {
this.save_marker_data();
}
},
Мы решили это, используя event.detail.latLng.lat(); и event.detail.latLng.lng(); вместо event.model...
inform: function(event){
this.$.userInformationLatitude.innerHTML = event.detail.latLng.lat();
this.$.userInformationLongitude.innerHTML = event.detail.latLng.lng();
}