Это приблизит вас, оно основано на доступных уравнениях и коде примера здесь :
window.pointsAround = function(centerLat, centerLng, radius) {
var result = [];
//do annoying trig maths to work out the delta in latitude between our start and end points
var targetD = radius; //km
var R = 6371; //km
var c = (targetD / R) / 2;
var sqrtA = Math.sin(c);
var a = sqrtA * sqrtA;
var sinHalfDLat = Math.sqrt(a);
var dLat = Math.asin(sinHalfDLat) * 2;
var dLatDegrees = ((dLat / (2 * Math.PI)) * 360);
var minLat = centerLat - dLatDegrees; //furthest valid latitude above the origin
var maxLat = centerLat + dLatDegrees; //furthest valid latitude below the origin
//alert("minLat=" + minLat + ", maxLat=" + maxLat + ", dLat=" + dLat + ", dLatDegrees=" + dLatDegrees);
//topmost and bottommost points in the circle
result.push({lat: minLat, lng: centerLng});
result.push({lat: maxLat, lng: centerLng});
//step from minLat to maxLat, interpolating coordinates that lie upon the circle
var step = (maxLat - minLat) / 180.0;
for (var count = 0; count < 179; count++) {
minLat += step;
dLat = (centerLat - minLat) * Math.PI / 180;
//more annoying trig to work out the delta in longitude for our interpolated coordinate
var dLon = 2 * Math.asin(Math.sqrt((a - (Math.sin(dLat/2) * Math.sin(dLat/2))) / (Math.cos(minLat) * Math.cos(centerLat))));
var dLonDegrees = ((dLon / (2 * Math.PI)) * 360);
var newLng = centerLng + dLonDegrees;
var deltaLng = newLng - centerLng;
result.push({lat: minLat, lng: newLng});
result.push({lat: minLat, lng: centerLng - deltaLng});
}
return result;
};
Извините за ужасные имена переменных, как я уже сказал, онина основе примера реализации, в котором используются те же имена.
Вот рабочий пример: http://jsfiddle.net/HmchC/8/
График более эллиптический, чем мне бы хотелось, но ме.На данный момент это настолько близко, насколько я могу себе это представить.
Обновление
Я исправил проблему с эллиптическим графиком, он просто пропускал преобразование из градусов в радианы,Когда математика узнает, что только градусы имеют смысл?
В любом случае, рабочий пример здесь: http://jsfiddle.net/HmchC/11/