По сути, вы пытаетесь найти N
точек на радиусе круга от заданной точки с заданным радиусом.Один из простых способов сделать это - разбить 360 градусов круга на N
равные куски и найти точки через равные промежутки времени.
Следующее должно примерно соответствовать тому, что вы ищете -
function findCoordinates(lat, long, range)
{
// How many points do we want? (should probably be function param..)
var numberOfPoints = 16;
var degreesPerPoint = 360 / numberOfPoints;
// Keep track of the angle from centre to radius
var currentAngle = 0;
// The points on the radius will be lat+x2, long+y2
var x2;
var y2;
// Track the points we generate to return at the end
var points = [];
for(var i=0; i < numberOfPoints; i++)
{
// X2 point will be cosine of angle * radius (range)
x2 = Math.cos(currentAngle) * range;
// Y2 point will be sin * range
y2 = Math.sin(currentAngle) * range;
// Assuming here you're using points for each x,y..
p = new Point(lat+x2, long+y2);
// save to our results array
points.push(p);
// Shift our angle around for the next point
currentAngle += degreesPerPoint;
}
// Return the points we've generated
return points;
}
Массив точек, которые вы получите, может быть легко использован для рисования желаемого круга на вашей карте Google.
Если ваша общая цель, однако, состоит в том, чтобы просто нарисовать круг с фиксированным радиусом вокруг точки, то гораздо более простым решением может быть использование наложения.Я обнаружил, что KMBox очень легко настроить - вы задаете ему центральную точку, радиус и наложение изображения (в вашем случае прозрачный круг с видимой линией вокруг края) изаботится обо всем остальном, включая изменение его размера при увеличении / уменьшении.