2011-02-26 5 views
7

다음 코드에서 보듯이 마커는 드래그 가능합니다. 경우에 따라 마커가 잘못된 영역 (다각형)에 떨어지면 드롭 이벤트를 취소하고 결과적으로 마커가 자동으로 원래 위치로 되돌아갑니다.Google지도 마커 드래그 작업을 취소하는 방법은 무엇입니까?

function placeMarker(latlng, color, isDraggable) { 
    var marker = new GMarker(latlng, { icon: getIcon(color), draggable: true }); 
    map.addOverlay(marker); 
    GEvent.addListener(marker, "dragend", function() { 
     //redraw polygons again 
    }); 
    GEvent.addListener(marker, "click", function() { 
     var latlng = marker.getPoint(); 
     map.openInfoWindowHtml(marker.getPoint(), latlng.y + ", " + latlng.x); 
    }); 
    return marker; 
} 

문제는 이미 dragend 이벤트에 떨어졌다 때 나는 마커의 드래그 이벤트를 취소 할 수있는 방법인가?

+1

은 왜 그냥 마커의 위도/LNG를 보여 정보창을 사용하고, 모든 드래그 마커를하지? –

+0

draggable 속성을 false로, clickable 속성을 true로 선언하면됩니다. 그들은 여전히 ​​클릭 및 마우스 오버 이벤트를 수신합니다. – amenadiel

+0

@MattBall 나는 드래그 가능해야합니다. –

답변

1

이 해가 지나도 여전히 해결책을 찾지 못했지만이 문제가 다시 발생했습니다. 전화 하시려면 event.cancelDrag()이 있었으면 좋겠습니다. dragstart

  • dragend 사용 containsLocation(e.latLng, mypolygon)preLocation
  • 로 현재 위치를 저장합니다

    내가 생각할 수있는 모든

    는 마커가 mypolygon에 속하는 경우 전에 다시이 있었다 곳으로 이동하지 않을 경우 확인하는 것입니다
    • 예 => 아무것도
    • 어떤을하지 않는다 : preLocation에 마커의 위치를 ​​설정합니다.

google map containsLocation

google map Events

1

Google지도 API가 지원한다는 사실을 기억하지 않지만 마커의 움직임을 스택에 저장하고 필요할 때 이전 위치를 추출하여 직접이 기능을 사용할 수 있습니다. 나는 그것이 반박 할 수없는 대답이라는 것을 알고있다. 그것은 단지 일반적인 생각입니다. 그러나 도움이되기를 바랍니다.

+0

정말 왜 마커를 흔들어 놓지 않는 이유는 무엇입니까? –

+0

그 방법은 다음과 같습니다. [Duncan의 블로그 - Google Maps API - 잠긴 드래그 표시 자] (https://duncan99.wordpress.com/2015/03/21/google-maps-api-locked-draggable-markers) /) – ChrisW

관련 문제