Стоит следующая задача:
Необходимо рисовать поверх карты (в 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)
Необходимо рисовать поверх карты (в 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)