12

在 Google Maps API v2 中,我想在拖动标记之前存储上一个位置,但是,当我开始拖动标记时,它总是会跳转到某个较高的位置,所以在回调中onMarkerDragStart,我无法获得最后一个位置。

这是一个错误,还是可以解决这个问题?

4

2 回答 2

3

标记“跳跃”的事实是因为否则您由于手指在其上方而看不到标记。为了获得标记位置,您应该在开始拖动之前保存它。文档很清楚:

当标记开始被拖动时调用。可以通过 getPosition() 访问标记的位置;此位置可能与开始拖动之前的位置不同,因为标记在触摸点上方弹出。

所以想法是保持位置“缓存”并在拖动开始时从这个缓存的变量中获取它们。

于 2017-06-05T11:56:05.857 回答
0

一个可以解决你问题的例子

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));
    });     
}
于 2018-09-19T10:54:11.323 回答