Клуб API Карт

solveDirectProblem не верно определяет точку

SubaroMows
29 июня 2016, 20:42

Доброго времени суток.

Есть две точки. Необходимо найти точку между данными, которая удалена на расстояние 300 метров от первой.

Вроде все просто, находишь приращение и с помощью solveDirectProblem находишь точку. Точка находиться, но она не лежит на прямой между данными.

Вот исходный код:

var point1 = [58.192148, 56.408538];
var point2 = [58.197424, 56.404492];

var placemark1 = new ymaps.Placemark(point1, {
    iconContent: "1"
});
var placemark2 = new ymaps.Placemark(point2, {
    iconContent: "2"
});
myMap.geoObjects.add(placemark1);
myMap.geoObjects.add(placemark2);

var direction = [point2[0] - point1[0], point2[1] - point1[1]];

var endPoint = ymaps.coordSystem.geo.solveDirectProblem(point1, direction, 300).endPoint;

var myPlacemark = new ymaps.Placemark(endPoint, {hintContent:' км'});
myMap.geoObjects.add(myPlacemark);

Версия карты 2.1

2 комментария
Подписаться на комментарии к посту
Дело в том, что градусы широты и доготы между собой неравноценны. В градусе широты 111 километов, а в градусе долготы — 111 * косинус широты. Соответственно, нужно или вводить поправку на широту (для небольших расстояний), либо пользоваться методом solveInverseProblem для правильного расчета направлений
http://jsfiddle.net/0mjerLc6/
twirl-team,

Благодарю, я думал что это уже зашито в solveDirectProblem