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

Перетаскивание карты

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
Перетаскивание карты
 
Есть отлично работающий код.
Код
axGisToolKit::axwMapView m_mapView;

....

m_mapView.put_MapLeft(m_mapView.get_MapLeft() - _x);
m_mapView.put_MapTop(m_mapView.get_MapTop() - _y);
Подскажите функции MapApi для реализации перетаскивания карты.
 
При сдвиге карты производится масса действий, часть из которых не зависит от нашего текста (работают функции и события компонента TScrollbox). В нужный момент windows вызывает функцию отрисовки (это уже наша часть).
Изучить логику работы можно по исходным текстам. Основные функции управления картой в mapwina.pas. Исходные тексты входят в инсталляцию
 
Вы меня не совсем поняли, вопросы со скролами решены, есть желание уйти от класса. Величины сдвигов известны. Вопрос возможно ли заменить код:
Код
m_mapView.put_MapLeft(m_mapView.get_MapLeft() - _x);
m_mapView.put_MapTop(m_mapView.get_MapTop() - _y);
На что то типа этого:
Код
long X,Y;
axGisToolKit::axwMapView m_mapView;
HMAP hMap = m_mapView.get_MapHandle();

....

__MapGetMapPos(hMap,X,Y);
__MapSetMapPos(hMap,X-dX,Y-dY);
Вопрос в том есть ли функции __MapGetMapPos и __MapSetMapPos?
 
Цитата
Сергей Виноградов написал:
вопросы со скролами решены, есть желание уйти от класса. Величины сдвигов известны. Вопрос возможно ли заменить код

ГИС-ядро ничего не знает про Ваше окно и смещения в нем. Эта реализация остается снаружи.
У карты есть только габариты, которые Вы можете запросить - mapGetPictureSize - в пикселах в текущем масштабе отображения.
Это диапазон Ваших скроллингов.
Смещения MapLeft и MapTop - это позиция скроллингов.
Используя смещение и зная габариты окна отображения, Вы посылаете ГИС-ядру команды на отрисовку нужного фрагмента (mapPaint95).
Если хотите отказаться от класса, который выполняет все пересчеты, Вам придется их выполнять самостоятельно.
Пример можно посмотреть в исходных текстах класса TMapView и его родителей - TMapViewWindow и TMapViewAcces (см. файлы mapviewa.pas, mapwina.pas и mapwinw.pas).
Смещения карты в окне Вам придется держать в своих переменных и самостоятельно их пересчитывать при масштабировании карты и сдвиге скроллингов.
 
Спасибо, это и подозревал.
Закрыто.
 
Также Вы можете посмотреть Пример приложения с исходными текстами на Visual C++ для библиотек gislib версии 12 для платформ "x64" и "x32".
Там реализован класс визуализации карты на базе класса CView (MFC), работающий на чистом MAPAPI без компонентов GIS ToolKit, и в нем как раз используются "самостоятельные" средства для смещения карты в окне отображения.
Страницы: 1
Читают тему (гостей: 1)



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

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