Google지도 및 다각형으로 작업하고 있지만 다각형이 서로 겹치지 않는지 확인해야합니다.
점 (lat, lng)이 다각형 안에있을 때 TRUE를 반환하는 함수가 있지만 다각형의 모든 점이 다른 다각형 안에 있는지 여부를 결정하는 것만으로는 충분하지 않습니다.
어떠한 제안?
Google지도 및 다각형으로 작업하고 있지만 다각형이 서로 겹치지 않는지 확인해야합니다.
점 (lat, lng)이 다각형 안에있을 때 TRUE를 반환하는 함수가 있지만 다각형의 모든 점이 다른 다각형 안에 있는지 여부를 결정하는 것만으로는 충분하지 않습니다.
어떠한 제안?
답변:
JSFiddle 예제
JSTS (JavaScript Topology Suite ) 라이브러리를 사용 하여 문제에 대한 솔루션을 보여주는 JSFiddle을 만들었습니다 .
설명
이 방법에는 두 가지 단계가 있습니다. 첫 번째 단계는 Google 도형을 WellKnownText (WKT) 도형 표현식 으로 변환 하는 데 널리 지원되는 형식입니다. 두 번째 단계는 JSTS를 사용하여 geometry.intersects()
두 개의 WKT 기하학 의 JSTS 비교 를 수행합니다 .
이것을 정말로 이해하려면 WKT에 대한 기본적인 이해가 필요합니다. Google지도의 다각형 지오메트리는 널리 지원되는 형식이 아니므로 즉시 WKT 지오메트리로 변환하여 JSTS에서 작업 할 수 있습니다.
이를 쉽게하기 위해 Wicket 라이브러리를 사용 했습니다 . 물론 언제든지 자신의 Google-Polygon-to-WKT 방법을 홈 롤링 하거나 한 번에 한 번 쓴 방법 을 사용 하거나 다른 해결책을 사용할 수 있습니다. 개인적으로 요즘에는 Wicket을 사용합니다. 보시다시피, 간단합니다.
// Pass in two Google Polygon objects.
// It returns two WellKnownText (WKT) geometry expressions.
//
function UseWicketToGoFromGooglePolysToWKT( poly1, poly2 )
{
var wicket = new Wkt.Wkt();
wicket.fromObject(poly1);
var wkt1 = wicket.write();
wicket.fromObject(poly2);
var wkt2 = wicket.write();
return [wkt1, wkt2];
}
다음은 고기와 감자입니다. JSTS를 사용하여 두 개의 WKT 형상을 취하고 교차하는지 테스트합니다. 다시 한 번 라이브러리에 의존하면 그다지 많지 않습니다.
// Pass in two WKT geometry expressions.
// It performs a JSTS intersects() comparison.
//
function UseJstsToTestForIntersection( wkt1, wkt2 )
{
// Instantiate JSTS WKTReader and get two JSTS geometry objects
var wktReader = new jsts.io.WKTReader();
var geom1 = wktReader.read(wkt1);
var geom2 = wktReader.read(wkt2);
if (geom2.intersects(geom1)) {
alert('intersection confirmed!');
} else {
alert('..no intersection.');
}
}
바이올린에서 라이브러리를 연결하는 방법
위에 링크 된 바이올린과 내가 시연 한 솔루션에는 두 개의 타사 라이브러리 인 JSS와 Wicket을 프로젝트에 추가해야합니다. 각각의 Github에서 코드를 가져와 프로젝트에 통합하는 것은 다른 연습입니다. 그러나 바이올린의 경우 Christopher Manning이 게시 한 기존 JSTS 예제 와 Wicket의 자체 데모 페이지 에서 라이브러리를 참조하여 라이브러리에 연결했습니다 . 기본적으로 페이지를 열고 "소스보기"를 선택하고 두 라이브러리에 대한 관련 참조를 뽑았습니다. 이들은 내가 사용한 정확한 라이브러리 끝점이었습니다.
http://arthur-e.github.io/Wicket/wicket.js
http://arthur-e.github.io/Wicket/wicket-gmap3.js
http://bl.ocks.org/christophermanning/raw/4450188/javascript.util.min.js
http://bl.ocks.org/christophermanning/raw/4450188/jsts.min.js