Я пытаюсь нарисовать круг на карте CloudMade.Центр круга выражается в широте / долготе, а радиус - в метрах.Ниже приведен JavaScript, который я использую, но некоторые тесты, кажется, указывают, что преобразование, которое я использую для радиуса, дает мне слишком короткий радиус.Кто-то понимает, что я делаю, неправильно?
функция DrawCircle (центр, радиус) {var circlePoints = Array ();
with (Math)
{
var d = radius/6371000; // radians
var lat1 = (PI/180) * center.lat(); // radians
var lng1 = (PI/180) * center.lng(); // radians
for (var a = 0; a <= 360; 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 CM.LatLng(parseFloat(y * (180/PI)), parseFloat(x * (180/PI)));
circlePoints.push(point);
}
circle = new CM.Polygon(circlePoints, circleBorderColor, circleBorderWidth, circleBorderOpacity, circleFillColor, circleFillOpacity);
map.addOverlay(circle);
}
}