[Interest] How to dynamically add a MapItemView to a Map?
Kishore J
kitts.mailinglists at gmail.com
Tue Sep 6 15:34:34 CEST 2016
Hi
I am inching forward with using QML maps in my C++ application. Now i'm
interested in dynamically adding multiple MapItemView objects to a given
map.
import QtQuick 2.5
import QtLocation 5.6
Map {
id: map
objectName: "MyMap"
// zoomLevel: (maximumZoomLevel - minimumZoomLevel)/2
zoomLevel: minimumZoomLevel
plugin: Plugin {
name: "here"
PluginParameter {name: "here.app_id"; value: "xxxxx"}
PluginParameter {name: "here.token"; value: "xxxxx"}
}
// activeMapType: supportedMapTypes[3]
center {
latitude: 10
longitude: 20
}
MapCircle {
id: staticCircle
center {
latitude: 5
longitude: 10
}
radius: 500000.0
color: 'yellow'
border.width: 4
border.color: 'yellow'
Component.onCompleted: {
console.debug("Loaded static MapCircle")
console.debug(center + ' radius: ' + radius)
}
Component.onDestruction: {
console.debug("Unloaded static MapCircle")
}
}
MapItemView {
id: mapitemview
objectName: "MyMapItemView"
model: ListModel {
id: list
ListElement{lat: 10; lon: 20; rad: 800000}
ListElement{lat: 30; lon: 40; rad: 700000}
}
delegate: Component {
id: delegate
MapCircle {
id: dynmapcircle
center {
latitude: lat;
longitude: lon;
}
radius: 500000.0
color: 'black'
border.width: 4
border.color: 'black'
Component.onCompleted: {
console.count("Loaded a MapCircle")
map.addMapItem(dynmapcircle)
}
}
}
Component.onCompleted: {
console.debug("Loaded first MapItemView")
console.debug(model.count)
}
Component.onDestruction: {
console.debug("Unloaded first MapItemView")
}
}
MapItemView {
id: mapitemview2
objectName: "MyMapItemView2"
model: ListModel {
id: list2
ListElement{lat: -10; lon: 20; rad: 800000}
ListElement{lat: -30; lon: 40; rad: 700000}
}
delegate: Component {
id: delegate2
MapCircle {
id: dynmapcircle2
center {
latitude: lat;
longitude: lon;
}
radius: 500000.0
color: 'blue'
border.width: 4
border.color: 'blue'
Component.onCompleted: {
console.count("Loaded a MapCircle2")
map.addMapItem(dynmapcircle2)
}
}
}
Component.onCompleted: {
console.debug("Loaded second MapItemView")
}
Component.onDestruction: {
console.debug("Unloaded second MapItemView")
}
}
Component.onCompleted:{
center.latitude = 10
center.longitude = 20
console.debug('Loaded map ' + map.center)
}
Component.onDestruction:{
console.debug('Unloaded map')
}
}
Further, i do not understand why i have to call the map.addMapItem()
function for each MapItem. I suspect that, that is the source of my
problem. I am currently able to define a separate qml file containing the
second MapItemView which i instantiate in C++ and set the map as it's
parent but that does not work.
Any help would be appreciated.
--
Regards,
Kishore
PS: I also seem to be facing another issue where the center value specified
in the map initialization does not work and I have to set the center in the
onCompleted() slot. Funnily, it only considers the Latitude or Longitude
value in the initialization depending on which is first specified!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20160906/e2b14632/attachment.html>
More information about the Interest
mailing list