На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты
АРХИВ ФОРУМА...
здесь вы можете ознакомиться с материалами форума до 08.06.2008

обновление изображения карты

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

При перемещении объектов встает проблема с обновлением изображения: при быстром паеремещении от объекта остаются следы.
Использую QDMapView для отображения карты, а при перемещении использую последовательность вызовов

QDMapObj.SetStyle(OS_NOWIEW)
mapUpdatePointPlane(......)
mapCommitObject(......)
QDMapObj.SetStyle(OS_NORMAL)

как можно исправить проблему и ускорить процесс(потому как остаются следы при нехватке скорости обработки событий перемещения)?
Советую посмотреть посмотреть пример - MapImage из каталога ./Sdk ГИС Конструктор для ПС конструктор(МСВС). Там показано, как отображать движущийся объект на пользовательской карте.
Пример может быть построен только на MAPAPI-интерфейсе, без использования компонент.
я уже рассматривал данный пример. он мне не подходит потому, что придется тогда самому реализовывать весь функционал, заложенный в QDMapView - а это мне очень непросто, да и по эффективности реализации, думаю, я буду проигрывать))
есть другие варианты? так чтобы работать лишь с обновлением изображения через mapapi
я не очень понимаю, зачем вы мне это предлагаете? неужели пример высокоэффективен, а реализация компонента хуже? это вызывает удивление

+
посмотрел еще раз пример - так и там проблемы: при нехватке скорости при перетаскивании полосы прокрутки на карте появляются полосы, где карта не отображается.
Изменено: Bushlya Max - 28.04.2011 00:31:34
Пример MapImage использует принцип двойной буферизации. Мы предлагаем рассмотреть его всем, кому требуется отображение движущихся объектов.
В случае, если Вы пользуетесь компонентами, то Вам необходимо при перемещении объекта каждый раз перезаписывать его на карте, что вызывает дополнительные временные затраты на работу с файловой системой. Затем Вы должны вызывать перерисовку области карты, которая представляет собой объединение габаритов изображения объекта с прежним и текущим местоположением.
так, что, значит кроме варианта переписывания компонента, как в MapImage, ничего нет?
Изменено: Bushlya Max - 26.04.2011 11:07:32
Вам предложено 2 варианта реализации отображения карты с движущимися объектами:
1.Пример MapImage
2.Классический вариант - использование компонент, который уступает 1 варианту в большем объеме затрат ресурсов операционной системы.

ГИС Конструктор предоставляет набор компонент и функций по работе с картами, с помощью которых Вы можете создатить свой вариант, гораздо производительнее и крсивее вышеизложенных.
спасибо. я удовлетворен ответом, но остался недоволен положением вещей.


узкое место, как я понял, - это файловая операция mapCommit? в моем случае приходится двигать не один объект, а множество, и сохранять в пользовательской карте обстановки. все равно я даже при применении плана действий из MapImage столкнусь с необходимостью сохранения положения объекта после каждого перемещения.
Изменено: Bushlya Max - 26.04.2011 12:19:25
1.mapCommit - производит запись данных на диск - это обычная операция с файловой системой. "Узкости" в нашей реализации нет. Просто, когда необходимо производить оперативно множество файловых операций при перемещении объекта (объектов) - затрачивается много ресурсов системы, что является "узким" местом работы системных функций с файлами.
2.По MapImage. Ньюанс заключен в применении функций семейства mapImage... для отрисовки, в которых реализован механизм двойной буферизации.
то, что вы мне предлагаете использовать двойную буферизацию при отрисовке - я вас понял. разумное решение. но что делать с обновлением состояния объектов? в примере же объект один и не куда не сохраняется, как я помню. а я загружаю пользовательскую карту обстановки со множеством объектов, и они двигаются. без mapCommit объекты после перемещения не изменятся в карте и при новом обращении к ним останутся на прежних местах.
Изменено: Bushlya Max - 26.04.2011 16:26:03
Страницы: 1 2 3 4 5 След.
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)


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