найти широту и долготу, используя расстояние - PullRequest
5 голосов
/ 15 января 2012

Я хочу найти Локатор, например

Point A = (18.5204303,73.8567437)
Point B = (x,73.8567437)
Distance =20KM(Kilometers)

Мне нужно найти широту (x) точки B, то есть 20 км от точки A. Долгота должна быть такой же. Помоги мне Заранее спасибо

Ответы [ 3 ]

3 голосов
/ 16 января 2012

я нашел ответ на свой вопрос

var lat1 = 18.5204303;
    var lon1 = 73.8567437;
    var d = 20;   //Distance travelled
    var R = 6371;
    var brng = 0;
    var LatMax;
    brng = toRad(brng); 
    var lat1 = toRad(lat1), lon1 = toRad(lon1);
    var lat2 = Math.asin( Math.sin(lat1)*Math.cos(d/R) + 
                      Math.cos(lat1)*Math.sin(d/R)*Math.cos(brng) );

    var lon2 = lon1 + Math.atan2(Math.sin(brng)*Math.sin(d/R)*Math.cos(lat1), 
                             Math.cos(d/R)-Math.sin(lat1)*Math.sin(lat2));
        lon2 = (lon2+3*Math.PI) % (2*Math.PI) - Math.PI;  
    lat2= toDeg(lat2);
    lon2= toDeg(lon2);
    alert(lat2);
    alert(lon2);

function toRad(Value) {
    /** Converts numeric degrees to radians */
    return Value * Math.PI / 180;
}
 function toDeg(Value) {
   return Value * 180 / Math.PI;
}

Спасибо всем

1 голос
/ 15 января 2012

Я не эксперт в этом. Но раньше я вычислял расстояние между двумя точками по формулам: тип подвижного .

Пожалуйста, проверьте сайт. это даст вам подсказку. Я думаю, что эти формулы destination и rhumblines аналогичны вашим требованиям. Посмотри

1 голос
/ 15 января 2012

Я не уверен, должен ли это быть ответ или комментарий. Но так как я пока не могу писать комментарии, я напишу ответ.

Эта страница является отличным источником для расчета расстояний. В этом случае вы, вероятно, ищете код для расчета новой позиции при движении по прямой линии из заданной позиции. Цитата со связанной страницы:

Чтобы найти широту / долготу точки на истинном курсе tc, расстояние d от (lat1, lon1) вдоль прямой линии (начальная точка не может быть полюсом!):

lat= lat1+d*cos(tc)
IF (abs(lat) > pi/2) "d too large. You can't go this far along this rhumb line!"
IF (abs(lat-lat1) < sqrt(TOL))
{
    q=cos(lat1)
}
ELSE 
{
    dphi=log(tan(lat/2+pi/4)/tan(lat1/2+pi/4))
    q= (lat-lat1)/dphi
}
dlon=-d*sin(tc)/q
lon=mod(lon1+dlon+pi,2*pi)-pi

Ссылка все еще полезна, но вам придется использовать некоторую алгебру, чтобы найти известную долготу и неизвестный курс. Поскольку вы довольно далеко на севере, большие расстояния по окружности могут быть более полезными, чем прямолинейные линии. Но я думаю, это зависит от проблемы.

...