2014-02-11 2 views
1

Google지도 다각형의 정점을 삭제하는 방법에 대한 게시물이 많습니다. 그들 중 누구도 나를 위해 일하지 못했습니다 - 이것은 그들이 참조하는 오래된 API 때문일 수 있습니다. 사용자가 다각형에 만들 수있는 점수의 수를 제한하려고합니다. 그들이 특정 수 이상의 포인트를 생성하는 경우 프로그래밍 방식으로 Google지도에 내장 된 '실행 취소'기능을 트리거하거나 마지막으로 생성 된 버텍스를 삭제할 수있는 방법이 필요합니다.다각형 Google지도의 정점 삭제 API v3

google.maps.event.addListener(myPolygon.getPath(), 'insert_at', function(event){ 
    var numPoints = myPolygon.getPath().length; 

    if(numPoints == 5){ 
    myPolygon.getPath().removeAt(4); 
    } 
}); 

이 다각형에서 점을 제거 끝 (반드시 마지막 지점 작성) :

은 내가이 이벤트 리스너를 추가로 작업하는 사용자에 대한 초기 다각형을 만들 때. 때때로 다음과 같은 오류가 발생합니다 : 내가 다각형에 '클릭'리스너를 사용하여 시도했지만, 사용자가 새로운 정점을 만들 때 클릭 이벤트가 발생하지 않습니다

Uncaught TypeError: Cannot read property 'b' of undefined.

. 실제 모양이 클릭 될 때만 시작됩니다.

답변

1

나는 당신의 자동 completition (첫 번째 LatLng를 마지막 LatLng를 동일하지 않습니다) 당신이 자동 완성 경로에서 마지막 LatLng를 제거하려고 할 때

버그가있는 것 같습니다이있는 경로를 사용하는 것 같아요.

이 버그는 포인트를 제거하지 못하게하지는 않지만 나중에 API가 수정 가능한 다각형의 UI를 업데이트 할 때 오류가 발생합니다. 이 오류를 무시하기 위해 try/catch 문을 사용하기 만하면됩니다.

제거 된 점의 위치와 관련 : 새로 만든 점은 경로의 끝에 삽입되지 않고 배치 된 점 사이에 삽입됩니다. point1 (index 0)과 point2 (index 1) 사이에 점을 삽입하면 새로 생성 된 점의 인덱스는 1이됩니다.

이 인덱스를 검색하려면 콜백의 첫 번째 인수를 사용할 수 있습니다.

요약 : 내 문제를했다


google.maps.event.addListener(myPolygon.getPath(), 'insert_at', function(index){ 
    if(this.getLength() > 4){ 
    try{ 
     this.removeAt(index); 
    }catch(e){} 
    } 
}); 
+0

. 자동 완성 된 다각형은 점을 제거 할 때 올바르게 작동하지 않지만 마지막 점이 첫 번째 점과 동일한 경우 제대로 작동합니다. http://jsbin.com/wipuv/2/edit는 작동하지 않지만 http://jsbin.com/wipuv/3/edit는 작동하지 않습니다. – carter

+0

죄송합니다. 저를 다시 가져 가야합니다. 첫 번째 점이 마지막 점과 같으면 누군가 편집 중에 첫 번째 점 또는 마지막 점을 이동하도록 선택한 경우 여전히 작동하지 않습니다. 예 : 내 링크의 삼각형은 4 점을 가지며 누군가가 첫 번째/마지막 점을 이동 한 다음 처음 점과 마지막 점 사이에 새 점을 삽입하면 오류가 발생합니다. – carter

+0

제안 된 수정 사항에 오류가 없습니다. http://jsbin.com/wipuv/4/edit?js,output –

관련 문제