@memradar

Как перевести координаты с PaintBox X и Y в Longitude и Latitude (Openstreetmap)?

Столкнулся с интересной задачей. У нас есть компонент TPaintBox на нем отображается условно какая-то часть карты взятая с Openstreetmap. Вопрос, как узнать широту и долготу, когда мы перемещаем курсор по данному компоненту, если нам известно следующие:

Ширина и высота компонента TPaintBox: hBox = 400 | wBox = 800
Из Openstreetmapизвестен текущий масштаб: 11
Lon и Lat для верхней левой точки (0,0) : Lon = 28.12 | Lat = 46.07
Так же в пределах нашего TPaintBox перемещается наш курсор, то есть мы знаем положение X и Y
тайлы с OpenStreet всегда имеют длину и высоту: 256 pxl
Буду признателен за помощь с формулами, для ниже обозначенных функций, например как:

function GetLonByX(APosX: Integer): Double;
function GetLonByY(APosX: Integer): Double;

ЗЫ. Масштаб и начальные координаты Lon | Lat могут меняться...

Заранее спасибо!
  • Вопрос задан
  • 269 просмотров
Решения вопроса 1
@zedxxx
TilesAtZoom := 1 shl Zoom; // при условии, что зум считаем с нуля
PixelsAtZoom := 256 * TilesAtZoom;

PixelResolutionLon := 360 / PixelsAtZoom;
PixelResolutionLat := 180 / PixelsAtZoom;

Lon := Lon0 + X * PixelResolutionLon;
Lat := Lat0 - Y * PixelResolutionLat;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы