Подскажите пожалуйста, если в MAPAPI 11 версии функционал, при котором я могу передать размер окна в пикселях и список объектов карты, которые я хочу увидеть в окне, чтобы в результате изменить зум(приблизить или отдалить) и все эти объекты стали видны в окне?
Для того, чтобы отобразить определенный фрагмент в окне с заданным размером в пикселах, можно адаптировать код функции QDMapViewWindow::SetScaleAllMapInWindow() из проекта графических компонентов ГИС Конструктор mapcomponents. Эта функция подбирает масштаб карты, чтобы она полностью отобразилась в текущем окне:
Код
//------------------------------------------------------------------
// Установить масштаб для отображения всей карты в окне
//------------------------------------------------------------------
int QDMapViewWindow::SetScaleAllMapInWindow()
{
if (GetMapHandle())
{
// Запросить размеры карты
long int mapWidth = 0;
long int mapHeight = 0;
mapGetPictureSize(GetMapHandle(), &mapWidth, &mapHeight);
// Вычислить отношение размеров карты к размерам экрана
double heightRatio = (double)mapHeight/(double)MapViewPort->height();
double widthRatio = (double)mapWidth/(double)MapViewPort->width();
// Выбрать наибольший коэффициент
double scaleMultiplier = widthRatio;
if (heightRatio > widthRatio)
scaleMultiplier = heightRatio;
// Установить новое значение масштаба
int isScaleSet = SetViewScale(GetViewScale()*scaleMultiplier);
if (VarMapVisible && VarRendering)
Repaint();
return isScaleSet;
}
return 0;
}
Отображение определенного набора объектов по определенному условию можно реализовать с помощью установки контекста отображения. Подробнее о работе с контекстами отображения можно посмотреть в разделе 3.6.11 "Управление составом отображения объектов электронной карты" Руководства программиста, доступного на нашем сайте (http://gistoolkit.ru/download/doc/gisdesigner_prog.pdf).