2013-04-02 2 views
1

편집 가능한 다각형의 이동에 대한 제한을 만들려고합니다. 내부 경로가 바깥 경로 밖으로 벗어나는 것을 방지하고 싶습니다. Google Maps google.maps.geometry.poly.containsLocation 함수를 사용하여 새 지점이 바깥 경계에 있는지 확인하지만 바깥에있는 경우 작업을 중지 할 수있는 방법을 찾을 수 없습니다.Google지도 이벤트의 기본 동작을 재정의 할 수 있습니까

나는 거짓을 반환 시도했지만 다각형은 여전히 ​​당신은 당신의 원본 코드와 아주 가까이있어 새로운 위치

google.maps.event.addListener(poly.getPaths().getArray()[1], 'set_at', function() { 
    return keepInside(this, arguments[0], arguments[1]); 
}); 

function keepInside(polygon, index, new_point) 
{ 
    outer_edge = new google.maps.Polygon({ 
     paths: polygon.getArray(), 
    }); 
    is_in = google.maps.geometry.poly.containsLocation(new_point,outer_edge); 
    if(!is_in) 
    { 
     return false; 
    } 
    return true; 
} 

답변

0

로 이동합니다. false를 반환하는 대신 원래 위치로 되돌릴 수 있습니다. 또한 청취자 set_at에 전달 된 두 번째 인수는 새로운 지점이 아니라 이전 지점입니다. 사용해보기 :

google.maps.event.addListener(poly.getPaths().getArray()[1], 'set_at', function(index, oldPoint) { 
    return keepInside(this, index, this.getAt(index), oldPoint); 
}); 

function keepInside(polygon, index, newPoint, oldPoint) 
{ 
    outer_edge = new google.maps.Polygon({ 
     paths: polygon.getArray(), 
    }); 
    if(!google.maps.geometry.poly.containsLocation(newPoint, outer_edge)) 
    { 
     polygon.setAt(index, oldPoint); 
    } 
} 
관련 문제