adding objects to the “Map” with addMapObject
Hello.
Always when I try to add an object to the map (exactly following this explanation [doc.qt.nokia.com]) I get this error message:
TypeError: Result of expression ‘map.addMapObject’ [undefined] is not a function.
Hope someone can help.
12 replies
First of all: I am using Qt Quick 1.0 because I develop for 5th devices. (maybe this is informative)
The code:
- Rectangle {
- id: r0
- anchors.fill: parent
- MapPolygon {
- id: polygon1
- border {color: "green"; width: 5}
- Coordinate {latitude:53.5*****;longitude: 8.5*****}
- Coordinate {latitude:53.5*****;longitude: 8.5*****}
- Coordinate {latitude:53.5*****;longitude: 8.5*****}
- }
- Map {
- id: map0
- plugin : Plugin {
- name : "nokia"
- }
- anchors.fill: parent
- size.width: parent.width
- size.height: parent.height
- zoomLevel: 10
- //pan: true // not so easy :(
- center: Coordinate {latitude:53.5*****;longitude: 8.5*****}
- Component.onCompleted: map.addMapObject(polygon1) // here is the procedure
- }
- }
Hello, the same problem occurs at “addCoordinate” for a “MapPolygon” to add a coordinate to it, too!
I think I can’t add map objects to other object. The error message is the same, just with the respective function’s name.
I still think it is something with QtQuick 1.1 and QtQuick 1.0 what I have to use because my Symbian 5th device doesn’t find QtQuick 1.1, aswell as I heard, adding functions for maps are made available with QtQuick :(
How to do so with QtQuick 1.0 then ?!
(It is especially for N97 btw)
Hello.
I want to add a coordinate to a MapPolygon called polygon1.
addCoordinate doesn’t work for me because I use QtQuick 1.0.
So, this is what I wrote, without an error message but nothing happens at all:
- MouseArea {
- anchors.fill: parent
- onPressed: {
- var px = mouse.x;
- var py = mouse.y;
- console.log("mouse clicked at X = " + px + ", Y = " + py);
- console.log("Add coordinate: ");
- console.log(newcoord.latitude + "," + newcoord.longitude);
- var objprefix = 'import QtQuick 1.0; import QtMobility.location 1.2; ';
- var objstring = objprefix+'Coordinate {latitude: '+ newcoord.latitude +'; longitude: '+newcoord.longitude+'}';
- console.log('objstr: '+objstring);
- // polygon1.addCoordinate(newcoord); // doesn't work
- //newcoord.parent = polygon1; // this neither
- map0.center = newcoord;
- console.log("finished.");
- }
- }
The idea is that the user clicks somewhere on the map and this coordinate is added to the polygon.
All the console logs appear with correct coordinates and the map centers then at the clicked position very successfully!
But the MapPolygon doesn’t change on the map.
By the way: I already tried to add a rectangle with the same method (differences in code: changed “objstring” and the parent polygon1->page)
If it is interesting, here the other code:
- Map {
- id: map0
- plugin: Plugin {
- name: "nokia"
- }
- anchors.fill: parent
- size.width: parent.width
- size.height: parent.height
- zoomLevel: 10
- center: Coordinate {
- latitude: 53.5****;
- longitude: 8.5***
- }
- // Component.onCompleted: map0.addMapObject(polygon1) // does NOT work!
- MapPolygon {
- id: polygon1
- border {
- color: "red";
- width: 4
- }
- Coordinate {
- latitude: 53.****;
- longitude: 8.****;
- }
- Coordinate {
- latitude: 53.****;
- longitude: 8.****
- }
- Coordinate {
- latitude: 53.****;
- longitude: 8.****
- }
- }
- }
And the polygon is clearly visible on my mobile device, but when I click somewhere, on the mobile phone nothing happens!
THank you.
This is very important for me because I need this feature to add coordinates to my polygon!!!
Now, I managed to create a whole map (at runtime, of course):
objstring would be expect of the imports:
- Map { id: map1; plugin: Plugin { name: \"nokia\" } anchors.fill: parent; size.width: parent.width; size.height: parent.height; zoomLevel: 10; center: Coordinate { latitude: 53.******; longitude: 8.****** } MapPolygon { id: polygon1; border { color: \"red\"; width: 4 } Coordinate { latitude: 53.***; longitude: 8.*** } Coordinate { latitude: 53.***; longitude: 8.*** } Coordinate { latitude: 53.***; longitude: 8.*** } Coordinate { latitude: 53.***; longitude: 8.*** } } }
^ (This is one single line. )
Now, I try on the whole polygon, let’s see…
Now I added linebreaks for optical reasons:
- Map {
- id: map1;
- plugin: Plugin { name: \"nokia\" }
- anchors.fill: parent;
- size.width: parent.width;
- size.height: parent.height;
- zoomLevel: 10; center:
- Coordinate { latitude: 53.******; longitude: 8.****** }
- MapPolygon { id: polygon1; border { color: \"red\"; width: 4 }
- Coordinate { latitude: 53.***; longitude: 8.*** }
- Coordinate { latitude: 53.***; longitude: 8.*** }
- Coordinate { latitude: 53.***; longitude: 8.*** }
- Coordinate { latitude: 53.***; longitude: 8.*** }
- }
- }
You must log in to post a reply. Not a member yet? Register here!


