RUS  ENG 

Координаты видимой области карты

Страницы: 1
RSS
Координаты видимой области карты
 
Стоит следующая задача:
Необходимо рисовать поверх карты (в AfterPaint) собственные растровые объекты (стандартные возможности zulu в данном случае не подходят), которые визуально должны быть привязаны к карте (координаты у объектов, естественно, географические).

Возникли два по сути тождественных вопроса:
1. Как получить географические координаты прямоугольника видимой области карты в MapCtrl?
или
2. Что есть величина MapScale относительно экранных пикселей?

Приблизительная формула такая:

bx, by - координаты объекта
sc - масштаб объекта (сколько единиц карты содержится в одном пикселе объекта)
Width, Height - размеры объекта в пикселях

bw:=Width*sc/MapCtrl.MapScale; - итоговая ширина растра
bh:=Height*sc/MapCtrl.MapScale; - итоговая высота растра

bx:=(bx-MapCtrl.MapX)/MapCtrl.MapScale+MapCtrl.ClientWidth/2; - итоговые координаты растра в клиентской области MapCtrl
by:=-(by-MapCtrl.MapY)/MapCtrl.MapScale+MapCtrl.ClientHeight/2; - итоговые координаты растра в клиентской области MapCtrl

И все бы вполне работало, если бы MapScale означал сколько единиц карты содержится в одном пикселе изображения.

PS: Zulu 6 (2988)
 
Да, но MapScale именно означает сколько единиц карты (сантиметры) содержится в одном пикселе изображения.
 
Спасибо. Странно, объект при перемещениях карты или при изменении масштаба "ездит" по карте.
Вроде в формулах ничего не напутано.
PS: Причем изначально после запуска программы объект находится именно там, где должен.
 
Вопрос закрыт. Проблема была в том, что в Zulu координата X - это не долгота, а широта.
Страницы: 1