Как реализовать привязанный MapQuickItem

Я реализую карту на основе QtLocation для отображения своего рода тепловой карты с цветными областями ("пикселями") на карте. Один пиксель этой тепловой карты покрывает область размером 100*100 м, поэтому их может быть огромное количество. Моя первая попытка реализовать это состояла в том, чтобы использовать элемент MapRectangle для каждого пикселя, устанавливая цвет каждого пикселя в соответствии с его значением, но при полностью загруженной карте производительность резко снижалась. Сейчас я пытаюсь реализовать разделение данных на группы этих пикселей, где каждый пиксель закрашивается OpenGL в моем подклассе QQuickItem под названием ColorTileItem. Этот ColorTileItem используется в качестве sourceItem для MapQuickItem, который является делегатом MapItemView, предоставленного моей моделью под названием colorTileModel. Элемент colorTimeModel является одной "плиткой" и содержит количество пикселей в плитке, цвет каждого пикселя и координаты. Мой код QML в настоящее время выглядит так:

MapItemView
{
    id:colorTileView
    model: colorTileModel

     delegate: MapQuickItem
     {
           id: tile
           coordinate: model.item.centralcoordinate
           zoomLevel: mapBase.zoomLevel
           visible: true
           sourceItem: ColorTileItem
           {
               id: colorcell
               width:  10
               height: 10
               opacity: 1
               visible: true
               tile: model.item

           }
     }
}

Моя проблема заключается в том, что эти элементы мозаики должны быть должным образом привязаны, чтобы покрыть точную область карты, независимо от уровня масштабирования, но для MapQuickItem ожидает его размер в виде значений пикселей, а не расстояния на карте. Я экспериментировал с различными значениями zoomLevel, но (очевидно) он работает правильно только на определенном уровне масштабирования родительской карты. Есть ли способ установить размер MapQuickItem в метрах или задать углы MapQuickItem в качестве геоординат (как в MapRectangle)?

Удобным решением было бы создать подкласс QDeclarativeRectangleMapItem или, возможно, QDeclarativeGeoMapItemBase, но, к сожалению, это частные классы, и я хотел бы, если это возможно, избегать полагаться на конкретную версию Qt.

0 ответов

Другие вопросы по тегам