2014-04-09 3 views
0

내 안드로이드지도 작성 활동에서 포인트 (즉, : LatLng)가 들어 있는지를 알려주는 평행 사변형 모양의 영역이 있습니다.BoundingBox 모양

bounds = new LatLngBounds.Builder() 
        .include(latlngNW) 
        .include(latlngNE) 
        .include(latlngSW) 
        .include(latlngSE) 
        .build(); 

이후

if (bounds.contains(currentLatLng) { 
    ..... 
} 

을하지만 그 정확하지 않습니다 : 내가 사용 시도했습니다. 네 모퉁이를 연결하는 선에 대한 방정식을 만들어야합니까?

미리 감사드립니다.

답변

0

LatLngBounds는 포함 된 점에서 상자를 만드는 것으로 보입니다. 모니터하려고하는 도형이 평행 사변형이라면 셰이프의 각 모서리에 대한 방정식을 만들고 if 문을 사용하여 선의 어느면에 점이 있는지 확인해야합니다.

쉬운 해결책이 아닙니다.

0

포인트 컬렉션에서 평행 사변형 모양의 경계 상자를 만들고 원하는 평행 사변형의 각도를 알고 싶다면 가장 좋은 방법은 2 차원 선형 전단 변환을 정의하는 것입니다. 수평선에 대한 각도와 수직면에 대한 각도. 그런 다음 변환 된 점을 일반 "경계 상자"루틴으로 공급하고 결과 상자의 모서리를 위의 변환의 역을 통해 공급하여 경계 평행 사변형을 얻을 수 있습니다.

이 접근법은 일반적으로 평행 사변형에 적합하며 사다리꼴에는 적합하지 않습니다. 경계 사다리꼴을 발견하는 데 사용할 수있는 몇 가지 특수한 경우가 있습니다. (x0-y0)을지도로 나타낼 수 있지만, 많은 종류의 사다리꼴의 경우, 위와 아래가 수평이고, 측면이 알려진 점 (x0-y0)에서 수렴한다고 가정하면, x '= (x-x0) 수평/수직 경계 사각형의 모서리를 역 매핑하여 형성된 사다리꼴은 그 내부에있을 것으로 예상되는 점들을 적절하게 경계 짓지 못할 수있다.

+0

완벽한 평행 사변형이 아닙니다. – Jack120

+0

@ Jack120 : 내가 위도/경도에 대해 이야기하기 때문에 의심스러운 점이있다. 사다리꼴면을 알고있는 점으로 수렴하는 사다리꼴을 다루고있을 가능성이있다. 컨버전스가 완벽하지 않더라도 접근법은 많은 목적을 위해 충분히 정확할 수 있습니다. 필요한 점이 모든 점을 담을 수있는 사다리꼴이라 할지라도 최악의 경우의 행동을 계산하고 결과를 조정하여 이상적인 것보다 약간 큰 사다리꼴을 계산할 수 있지만 모든 점을 포함하도록 보장됩니다 관심의 대상. – supercat