Клуб API Карт

GeoPoint

derigel
9 июня 2009, 19:43

У точки есть метод distanceTo - для измерения расстояния до дркгой точки.

А как можно сделать наоборот, по точке, и cмещеню в метрах по вертикали и горизонтали получить географические координты результата? Ну или по направлению, и расстоянию от текущей точки.

2 комментария
Подписаться на комментарии к посту
Сделал так
function Move(point, brng, d)
{
  brng = brng.toRad();
  var R = 6371 * 1000; //earth's radius in meters
  var lat1 = point.getLat().toRad();
  var lon1 = point.getLng().toRad();
  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));
  return new YMaps.GeoPoint(lon2.toDeg(), lat2.toDeg());
}
Если расстояния небольшие, то можно просто разделить разность расстояний в километрах на 111 вдоль меридиана и 111*косинус широты вдоль параллели и получить смещение в географических координатах.