QML 映射适当的标记实例化

QML map proper markers instantiating

我有一张使用 Map.qml 显示的地图 (OpenStreetMaps) ( Window { ... Map {...} } ) 我有一个 Marker.qml 文件(基于 MapQuickItem)。一切正常,当我将这个标记静态放置到我的地图上时:Map { ... Marker { params } }.

我想放置 N 个标记(当然,有坐标和其他参数)。标记参数在 somefile.txt 中定义,此文件使用 C++ 解析。

问题是如何proper/faster/correctly 实例化并将解析的点放置到 Map 中?我应该像 addMarker(position, name) { map.addMapItem( ? ) } 那样在 Map.qml 中执行方法吗? 或者我应该只使用 C++ 放置这个标记,比如获取 Map 容器并在某些 "map-projected" class?

上调用 addMapItem

请帮助我理解这个管道。

我想你要找的是MapItemView

您的 C++ 代码将通过模型提供标记信息(位置、名称等),然后用作 MapItemView 的输入。 然后视图为模型中的每个条目创建一个地图视图项并将其放置在其父地图上。

有关示例,请参阅 http://doc.qt.io/qt-5/location-places-qml.html#display-search-results-using-a-mapitemview

您的 C++ 代码可以在运行时以任何它认为合适的方式修改模型,例如添加或删除条目,修改条目数据。