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

Плавное перемещение карты на планшете при использовании тачскрина

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
Плавное перемещение карты на планшете при использовании тачскрина
 
Тема была в этом разделе была создана ошибочно и перенесена в другой раздел: https://www.gisweb.ru/forum/forum7/14330-plavnoe-peremeshchenie-karty-na-planshete-pri-ispolzovanii-...


Пытаюсь реализовать перемещение карты на планшете с испльзованием тачскирина.
В работе используем формат mbtiles.
Для отображения карты создан класс наследник от компонента QDMapView и в нем реализованы обработчики событий от тачскрина (см. код ниже)
При работе с картой mbtiles, в которой размер тайла равен в среднем 10кБ карта перемещается плавно, без рывков и подтомаживаний.

Но при работе с картой, в которой размер тайла в среднем равен 150 кБ начинают появляться рывки и подтормаживания. Хотя при перемещении этой же карты в ГИС Панорама 14 все работает адекватно.Можно ли как-то ускорить работу карты в своем приложении?

Характеристики планшета:
   Operating System: Astra Linux
   KDE Plasma Version:
   KDE Frameworks Version: 5.104.0
   Qt Version: 5.15.2
   Kernel Version: 5.15.0-70-generic
   OS-Type: 64
   Processor: 4 × Intel® Celeron® N5100 @ 1.10GHz
   Memory: 3,6 ГиБ

P.S.: Размер фрагмента для уровня увеличения узнаем, открыв файл через DB Browser for SQLite

class MapGisView : public QDMapView
{
   
pivate:    
   QPointF scrollBy(QPointF start, QPointF finish);
   bool event(QEvent* event);

}



bool MapGisView::event(QEvent *event)
{
   if(event->type() == QEvent::TouchBegin)
   {
       QTouchEvent *touchEvent = static_cast<QTouchEvent*>(event);
       m_ScrollBarStart = QPoint(HScrollBar->value(),VScrollBar->value());
       m_FirstPointTouchDrag = touchEvent->touchPoints().first().pos();
       m_TouchCounter = 0;
       return true;
   }

   if(event->type() == QEvent::TouchUpdate)
   {
       m_TouchCounter++;
       if(m_TouchCounter == 5)
       {
           QTouchEvent *touchEvent = static_cast<QTouchEvent*>(event);
           QPointF second_point_touch_drag = touchEvent->touchPoints().first().pos();
           if(!m_FirstPointTouchDrag.isNull())
           {
               QPointF mv = scrollBy(m_FirstPointTouchDrag, second_point_touch_drag);
           }
           m_TouchCounter = 0;
       }
       else
       {
           m_TouchCounter++;
       }
   }
   if(event->type() == QEvent::TouchEnd)
   {
       connect(this,SIGNAL(SignalMousePress(int, int, int)),this,SLOT(do_SignalMousePress(int, int, int)));
   }
   return QWidget::event(event);
}

QPointF MapGisView::scrollBy(QPointF start, QPointF finish)
{
   double dx = start.x() - finish.x();
   double dy = start.y() - finish.y();
   int x_move = m_ScrollBarStart.x() + static_cast<int>(dx);
   int y_move = m_ScrollBarStart.y() + static_cast<int>(dy);
   
   //Move map
   HScrollBar->setValue(x_move);
   VScrollBar->setValue(y_move);
   
   return QPointF(x_move, y_move);
}
Изменено: Дмитрий - 19.11.2024 14:22:24
 
Добрый день!

Продолжили обсуждение данного вопроса в ветке форума https://gisweb.ru/forum/forum7/14330-plavnoe-peremeshchenie-karty-na-planshete-pri-ispolzovanii-tach...
Страницы: 1
Читают тему (гостей: 1)



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

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