在 Google Maps API v2 中,我想在拖动标记之前存储上一个位置,但是,当我开始拖动标记时,它总是会跳转到某个较高的位置,所以在回调中onMarkerDragStart
,我无法获得最后一个位置。
这是一个错误,还是可以解决这个问题?
在 Google Maps API v2 中,我想在拖动标记之前存储上一个位置,但是,当我开始拖动标记时,它总是会跳转到某个较高的位置,所以在回调中onMarkerDragStart
,我无法获得最后一个位置。
这是一个错误,还是可以解决这个问题?
标记“跳跃”的事实是因为否则您由于手指在其上方而看不到标记。为了获得标记位置,您应该在开始拖动之前保存它。文档很清楚:
当标记开始被拖动时调用。可以通过 getPosition() 访问标记的位置;此位置可能与开始拖动之前的位置不同,因为标记在触摸点上方弹出。
所以想法是保持位置“缓存”并在拖动开始时从这个缓存的变量中获取它们。
一个可以解决你问题的例子
function makeMarker(iPos) {
var marker = new google.maps.Marker({
position: iPos,
draggable: true,
map: map,
zIndex: 1001
});
google.maps.event.addListener(marker, 'dragstart', function() {
iPos = marker.getPosition();
});
google.maps.event.addListener(marker, 'dragend', function(event) {
console.log("Position after dragging: ", event.latLng.toUrlValue(6));
console.log("Position before dragging: ", iPos.toUrlValue(6));
});
}