Qt QML - создать свою форму в Qt Location

В настоящее время я работаю над приложением Qt Quick, которое предоставит средство просмотра карт. Я хочу создать неправильные формы (более одной формы), а затем поместить их на карту. это хороший способ сделать это с помощью QQuickPaintedItem (Writing Расширения QML с C++) или есть другой способ сделать это? или в любом случае создать свою собственную форму, например MapCircle (например, MapCustom) в Map Viewer?


person Behzad    schedule 18.12.2017    source источник
comment
О каких неправильных формах вы говорите? Почему вы не используете MapPolygon?   -  person eyllanesc    schedule 18.12.2017
comment
Спасибо за ваш комментарий (@eyllanesc), я хочу использовать более одной неправильной формы (все фигуры имеют одинаковую форму), но вместо того, чтобы повторять их на карте Qml (из-за низкой производительности), я хочу закрасить все их в одном QQucikItem.   -  person Behzad    schedule 18.12.2017
comment
Если вы хотите создавать свои предметы из C++, подходящий вариант — QQuickPaintedItem. Каких ответов вы ожидаете?   -  person eyllanesc    schedule 18.12.2017
comment
во-первых, я нахожу подходящий способ (я получил ответ), во-вторых, как я могу преобразовать положение моих неправильных фигур в координату местоположения Qt?   -  person Behzad    schedule 18.12.2017
comment
Вы должны наследоваться от класса QDeclarativeGeoMapItemView, но это класс, который находится в приватной части Qt.   -  person eyllanesc    schedule 18.12.2017
comment
сначала я попытался создать свою форму с помощью QDeclarativeGeoMapItemView, и я столкнулся с тем, что это частная часть их проекта.   -  person Behzad    schedule 18.12.2017
comment
Если вы беспокоитесь о производительности, вам следует использовать QQuickItem, а не QQuickPaintedItem. Но как вы предполагаете синхронизировать свой предмет с картой (перемещение, масштабирование и т.д.)?   -  person folibis    schedule 18.12.2017
comment
Это моя главная проблема. На самом деле я ищу способ создать свою собственную форму, например, MapCustom, например MapCircle в Qml.   -  person Behzad    schedule 18.12.2017
comment
Я не думаю, что вы сможете создать какую-то геоформу лучше, чем ребята из Qt. Конечно, я не знаю ваших навыков, может быть, вы действительно можете. В лучшем случае вы просто сделаете то же самое. Но я советую использовать один из существующих элементов, например MapPolygon   -  person folibis    schedule 18.12.2017


Ответы (1)


Если ваша фигура не должна иметь географическую привязку (например, вершины не должны быть фактическими географическими координатами), но вы просто хотите, чтобы заполнитель выглядел по-особенному, вы можете указать QtQuick Shapes вперед

person Pa_    schedule 21.12.2017
comment
Но @Paul, я хочу создать свою собственную форму, основанную на GeoMapItemView. - person Behzad; 24.12.2017
comment
@Behzad, пожалуйста, прочитайте свой комментарий еще раз :-) Вы уверены, что хотите переопределить QGeoMapItemView? Это представление, которое по умолчанию ничего не рисует, но требует делегата. Если вы имеете в виду создать свою собственную форму, производную от QGeoMapItemBase, то вам следует более конкретно указать свой вариант использования. Должна ли она быть привязана к местности или нет? можете ли вы сделать пример для него? - person Pa_; 24.12.2017
comment
Ты прав, @Paul, мой комментарий немного расплывчатый. Я хочу создать тысячу фигур как один элемент в QML, который должен иметь географическую привязку. Другими словами, вместо того, чтобы повторять свою форму на карте Qml (из-за низкой производительности), я хочу создать всю свою форму как один элемент и показать ее на карте. Я также хочу синхронизировать свой предмет с картой (перемещение, масштабирование и т. д.). Поэтому он должен иметь географическую привязку. - person Behzad; 25.12.2017
comment
Похоже, вам нужен своего рода объект MultiPolygon, где у вас может быть несколько отдельных путей в одном и том же элементе? Насколько динамичными должны быть ваши формы? После создания они должны быть статичными? - person Pa_; 25.12.2017
comment
все мои формы должны быть динамичными. Я рассматриваю возможность привязки моего элемента карты в качестве родителя заполнения (основной карты) (отдельно слой на всей карте). Поэтому я могу нарисовать все свои тысячи фигур на карте как один элемент, а не повторять их. - person Behzad; 25.12.2017
comment
пожалуйста, определите динамический. Изменяет ли каждая фигура свои данные (координаты вершин) с течением времени? Если это так, я боюсь, что единственный поддерживаемый подход, который в настоящее время предлагает QtLocation, — это MapItemView + MapPolygon. Если вы хотите создать такой элемент карты, вы должны создать подкласс QGeoMapItemBase, но тогда вы будете предоставлены сами себе. - person Pa_; 25.12.2017
comment
Да, моя фигура со временем меняет свои данные. Но QGeoMapItemBase — это класс, который находится в приватной части Qt. - person Behzad; 27.12.2017