현재 OpenLayers 매핑 사이트를 개발 중입니다. 선 도구와 영역 도구를 사용하여 측정 할 수 있습니다. 이 두 가지 모두 현재 OpenLayers API에 요약 된 측지 측정 을 계산하도록 설정되어 있습니다.
사용자 테스트 중에 사람들이 이미 알고있는 거리 (예 : 도시 간 운전)에 대한 도구의 측정에 의문을 제기 했기 때문에 평면 측정보다는 측지 측정을 사용합니다 .
사이트의 새로운 기능은 사용자가 설정된 반경의지도에 원을 그릴 수 있도록하는 것입니다. OpenLayers는 평면 거리를 사용하여 원을 그리는 것만 허용하므로 사용자가 측지 측정 도구를 사용하여 원을 측정 할 때 값이 일치하지 않습니다. 아래 이미지에서 원 평면 반경은 10km이지만 지름의 측지선 측정은 12km입니다.
분명히 이것은 사용자 (및 자신)가 어느 것이 올바른지 궁금하게 할 것입니다.
이 답변 을 보면 대부분의 데스크탑 GIS 시스템이이 문제를 "무시"하고 평면 측정 및 거리를 반환하는 것 같습니다. 그렇다면 평면 및 측지 측정을 처리하기위한 사용자 인터페이스 및 정확도 측면에서 가장 좋은 방법은 무엇입니까?
최신 정보
radii 및 Mercator 투영 문제를 보여주는이 Google 예제를 찾았습니다.
http://maps.forum.nu/gm_sensitive_circle2.html
원을 그리는 JavaScript 코드는 다음과 같습니다.
var lat1 = (PI/180)* center.lat(); // radians
var lng1 = (PI/180)* center.lng(); // radians
for (var a = 0 ; a < 361 ; a++ ) {
var tc = (PI/180)*a;
var y = asin(sin(lat1)*cos(d)+cos(lat1)*sin(d)*cos(tc));
var dlng = atan2(sin(tc)*sin(d)*cos(lat1),cos(d)-sin(lat1)*sin(y));
var x = ((lng1-dlng+PI) % (2*PI)) - PI ; // MOD function
var point = new GLatLng(parseFloat(y*(180/PI)),parseFloat(x*(180/PI)));
circlePoints.push(point);
bounds.extend(point);
}
이 원은 지구의 곡률을 고려합니까?
최종 업데이트
http://geographika.co.uk/creating-a-geodesic-circle-in-openlayers에 게시 된 작업 코드