拖动前如何获得标记位置?

时间:2013-02-17 15:04:24

标签: android google-maps google-maps-markers

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

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

2 个答案:

答案 0 :(得分:2)

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

  

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

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

答案 1 :(得分: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));
    });     
}