gpt4 book ai didi

c++ - 可以在 QML 的 Map 上绘制带有孔的 MapPolygon 吗?

转载 作者:行者123 更新时间:2023-11-30 03:15:27 26 4
gpt4 key购买 nike

在 C++ 中,我可以使用 QPainterPath::subtracted 绘制带孔的多边形,但我不知道,在 QML Map 中如何实现。

最佳答案

Qt 5.13 Mapbox GL Plugin 是可能的,例如使用 QGeoPolygon ,您也可以使用 GeoJSON。例如:

main.cpp

#include <QGeoPolygon>
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>

int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

QGuiApplication app(argc, argv);

QGeoPolygon polygon;
polygon.setPath({{51.11, 17.13},
{50.42, 30.54},
{58.36, 26.70},
{51.11, 17.13}});
polygon.addHole({{54.36, 23.46},
{51.91, 20.52},
{51.50, 28.25},
{54.36, 26.80},
{54.36, 23.46}});

QQmlApplicationEngine engine;
engine.rootContext()->setContextProperty("poly", QVariant::fromValue(polygon));
const QUrl url(QStringLiteral("qrc:/main.qml"));
QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
&app, [url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)
QCoreApplication::exit(-1);
}, Qt::QueuedConnection);
engine.load(url);

return app.exec();
}

ma​​in.qml

import QtQuick 2.12
import QtQuick.Window 2.12
import QtLocation 5.13
import QtPositioning 5.13

Window {
visible: true
width: 640
height: 480
Map {
anchors.fill: parent
center: QtPositioning.coordinate(52, 22)
plugin: Plugin {
name: "mapboxgl"
}
zoomLevel: 4
MapPolygon {
color: "red"
border.color: "green"
border.width: 2
smooth: true
opacity: 0.25
geoShape: poly
}
}
}

enter image description here

关于c++ - 可以在 QML 的 Map 上绘制带有孔的 MapPolygon 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57054554/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com