2013-09-05 5 views
2

지도상의 지정된 사각형 내에 점이 있는지 확인해야합니다. 전단지를 사용하여 사각형의 남서 및 북동 점을 제공해야하는 경계 상자를 만듭니다. 직사각형 직사각형 에지 (즉, 폭) = 1000 ㎛의 길이 3의 하단의 2 중간 지점의 상부 에지의 중간 지점 1 :주어진 두 개의 long lat 점과 너비가있는 사각형의 끝점 계산

I는 다음 정보를 갖는다.

위의 두 점이 매우 비슷하다고 가정하는 것이 안전합니다.

어떻게 달성 할 수 있는지에 대한 아이디어가 도움이 될 것입니다.

답변

1

먼저 왼쪽 위와 오른쪽 아래 점을 얻으려면 일부 지오메트리를 사용해야합니다. 이 페이지 : https://gis.stackexchange.com/questions/2951/algorithm-for-offsetting-a-latitude-longitude-by-some-amount-of-meters은 미터에서 십진수로 정확하게 변환하는 좋은 예입니다.

예를 들어, 왼쪽 위 점을 얻으려면 선의 중간 점부터 시작하고 선의 전체 길이가 있으므로 선의 길이를 2를 입력 한 다음 해당 길이를 미터에서 십진 도로 변환 한 다음 해당 양만큼 X 좌표를 더하십시오. 그러면 오른쪽 상단이 나타납니다. 왼쪽 아래 모서리에 대해 빼기 대신 해당 양을 뺍니다. Simple calculations for working with lat/lon + km distance? 위의 코드 조각에서 DECIMAL_DEGREES_PER_METER 값을 얻는 방법을 설명합니다

var upperMiddlePoint = [30,50]; 
var segmentLength = 5000; 
var northEastPoint = upperMiddlePoint; 
var northEastPoint.x = northEastPoint.x + ((segmentLength/2) * DECIMAL_DEGREES_PER_METER) 

여기에 빠르고 쉽게 답이있다.

사각형 테두리를 나타내는 LatLngBounds 개체를 만들려면 다음을 수행하십시오. , here를 설명 된대로 지점이이 범위 내에 있다면 API Here.

var bounds = new L.LatLngBounds(southWestPoint, northEastPoint); 

는 결정하기 LatLngBounds.contains() 기능을 사용하십시오. 경계가없는 경우는 false 점을 포함하는 경우

var contains = bounds.contains([50, 30]); 
if (contains) { 
    doStuff(); 
} 

contains 부울 사실 일 것입니다.

+0

위의 기능을 알고 있습니다. 질문에 언급 된 데이터가있을 때 southWestPoint 및 northEastPoint를 계산하는 방법에 대한 내 질문은 무엇입니까 – user1628340

+0

그러면 기하학의 간단한 문제처럼 보입니다. 왼쪽 상단 모서리를 얻기 위해 중점 상단 모서리 X 좌표에서 모서리 길이의 1/2 (500m)을 뺍니다. 그럼 바닥을 위해 똑같이합니까? –

+0

설명을 위해 내 대답의 시작 부분에 몇 가지 코드를 추가했습니다. –