북서,남동쪽 경도,위도값을 알아내는 방법이 궁금합니다

http://apis.map.daum.net/web/sample/mapInfo/

지도 정보 얻어오기

http://apis.map.daum.net/web/documentation/ 에 getData 에 rectangle

직사각형 둘다 남서,북동쪽 경도, 위도값만 얻을수 있는데

북서,남동쪽 경도,위도는 어떻게 알수 있나요?

왜곡이 있어서 북서쪽의 위도와 북동쪽의 위도가 다르더라구요.

사각형은 평면 직교 좌표계를 기준으로 그려집니다.
외부에서 비록 위경도를 받지만 내부적으로 평면 직교 좌표계로 변환하여 계산합니다.
그래서 이미 투영된 지도판 위에서는 수직, 수평으로 그려집니다.
이미 평면으로 투영된 지도의 축을 따라 이동한 것이기 때문입니다.

하지만 위경도 좌표 중에 한쪽만 수치를 바꾸어 직선을 그리면
지도상에 그리면 수직, 수평으로 그려지지 않습니다.
이미 지도 판 자체가 투영된 이미지를 사용하기 때문입니다.

따라서 문의하신 내용은 직교 좌표계로 변환하여 계산하고 나서 역변환을 거치면 구할 수 있습니다.

var sw = new daum.maps.LatLng( lat1, lng1 );
var ne = new daum.maps.LatLng( lat2, lng2 );

가 있다고 가정하면

// 잘못된 예
var se = new daum.maps.LatLng( sw.getLat(), ne.getLng() );
var nw = new daum.maps.LatLng( ne.getLat(), sw.getLng() );

이렇게 구하면 지도 좌표계가 이미 평면에 투영된 상태이므로
그려진 사각형의 반대쪽 양 끝점을 구할 수 없습니다.

구하기 위해서는 평면 직교 좌표계로 변환 후, 값을 취해야 합니다.

// 1. 직교 좌표계로 변환
var swCoords = sw.toCoords();
var neCoords = ne.toCoords();

// 2. 직교 좌표계에서는 수직/수평 방향의 좌표는 유지되므로
var seCoords = new daum.maps.Coords( neCoords.getX(), swCoords.getY() );
var nwCoords = new daum.maps.Coords( swCoords.getX(), neCoords.getY() );

// 3. 다시 위경도로 변경
var se = seCoords.toLatLng();
var nw = nwCoords.toLatLng();

이 값들은 용도에 따라 의미가 있을 수도 없을 수도 있습니다.

국지 좌표계를 투영시킨 평면 좌표계에서는
매우 좁은 영역을 표현하는 사각형은 의미가 있습니다만,
위/경도의 정수부가 변할 정도의 큰 사각형을 다룰 경우에는
왜곡이 심해지기 때문에 차라리 사각형을 표현하기 보다는
중간 값들을 보간하여 Polygon으로 감싸는 영역으로 표현하는 것이 더 정확할 수 있습니다.

1개의 좋아요