На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Зум для видимости выбранного списка объектов

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1
RSS
Зум для видимости выбранного списка объектов
 
Доброе утро всем.

Подскажите пожалуйста, если в 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;
}

Исходные коды проекта mapcomponents также доступны в инсталляции ГИС Конструктор 12, доступной на нашем сайте (https://gisinfo.ru/download/download_linux.htm#5).

Отображение определенного набора объектов по определенному условию можно реализовать с помощью установки контекста отображения. Подробнее о работе с контекстами отображения можно посмотреть в разделе 3.6.11 "Управление составом отображения объектов электронной карты" Руководства программиста, доступного на нашем сайте (http://gistoolkit.ru/download/doc/gisdesigner_prog.pdf).
 
Спасибо, Александр, посмотрю.
Страницы: 1
Читают тему (гостей: 1)



© КБ Панорама, 1991-2021

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности