홈>
문제가 있습니다. Javascript 및 Google Maps API v2를 사용하여 다음을 수행하려고합니다.
인터넷에서 찾은 공식을 사용하여 개별 원을 잘 그릴 수 있습니다. 내가 직면 한 문제는 서클이 다음과 같아야한다는 것입니다.
A. 동심하고 B. 각 "사분면"에 대해 서로 다른 반경을 가져야합니다 (예 : NE, NW, SE 및 SW
).인터넷에서 생각할 수있는 거의 모든 곳을 검색했으며이 작업을 수행하는 방법을 찾지 못했습니다. 분명히 누군가 전에이 작업을 수행 했으므로 프로그래머 포럼에서 묻는 이유는 무엇입니까? :)
감사합니다!
업데이트 :다음 코드를 사용하여 각 점의 좌표가 무엇인지 생각했습니다. 아래 그림의 경우 :
이것은 다음 JS를 사용하여 얻었습니다 :
http://gist.github.com/181290
참고 :이 자바 스크립트는 다음 사이트에서 (약간 수정 된) 사이트이며,이 알고리즘은 알고리즘의 결과와 관련하여 http://www.movable-type.co.uk/scripts/latlong.html
업데이트 2 :Google지도에서이 정보를 얻을 수있었습니다 :
다음 코드를 사용하여 생성 :
var NEQ = [0, 90];
var SEQ = [90, 180];
var SWQ = [180, 270];
var NWQ = [270, 0];
// var centrePoint = new LatLon(25.0, -83.1);
// pointsForWindQuadrant(NEQ, centrePoint, 50);
function pointsForWindQuadrant(quadrantDegrees, centrePoint, radius){
var points = [];
// Points must be pushed into the array in order
points.push(new google.maps.LatLng(centrePoint.lat, centrePoint.lon));
for(i = quadrantDegrees[0]; i <= quadrantDegrees[1]; i++){
var point = centrePoint.destPoint(i, radius * 1.85);
points.push(new google.maps.LatLng(point.lat, point.lon)); // Radius should be in nautical miles from NHC
}
points.push(new google.maps.LatLng(centrePoint.lat, centrePoint.lon));
return points;
}
업데이트 3 :아마도 이것이 직교 좌표계가 아닌지리 좌표계용임을 지적해야합니다. 좌표계. 감사합니다!
- 답변 # 1
- 답변 # 2
내가 알아 냈습니다. 최종 코드는 다음과 같습니다. 약간 리팩터링 될 수 있습니까?
// Returns points for a wind field for a cyclone. Requires // a LatLon centre point, and an array of wind radii, starting // from the northeast quadrant (NEQ), i.e., [200, 200, 150, 175] // // Returns points to be used in a GPolyline object. function pointsForWindQuadrant(centrePoint, radii){ if(radii.length != 4){ return false; } var points = []; var angles = [0, 90, 180, 270]; // For each angle 0, 90, 180, 270... for(a = 0; a < angles.length; a++){ // For each individual angle within the range, create a point... for(i = angles[a]; i <= angles[a] + 90; i++){ var point = centrePoint.destPoint(i, radii[a] * 1.85); // Radius should be in nautical miles from NHC points.push(new google.maps.LatLng(point.lat, point.lon)); } } // Add the first point again, to be able to close the GPolyline var point = centrePoint.destPoint(0, radii[0] * 1.85); points.push(new google.maps.LatLng(point.lat, point.lon)); return points; }
결과는 다음과 같습니다.
기본적으로 원을 x, y = (cos (a), sin (a))로 계산 한 다음 적절한 각도의 함수 인 반지름으로이 두 항을 곱합니다. Javascript 또는 Google지도를 잘 모르므로 Python에서이 작업을 수행 할 것입니다. 잘 알고 있으면 충분합니다.
어느 것이
실제로 스케치를 따라갈 수 없었기 때문에 숫자 만 추측했습니다. 또한, 가장 오른쪽에있는 2 개의 사분면을 같은 모양으로 만들었습니다. 왜냐하면 그것은 음모의 모습과 같지만 물론 선택 사항입니다.