Hello,
I have problems to use a palette in combination with Leaflet. Since I want all the “dropped” nodes from the palette to stay on the geographic position, I am calculatiing the lat/lng pair ,with the Leflet method, using the location of the node.
var location = diagram.findNodeForData(nodeDataArray[i]).location;
var coordinates = map.containerPointToLatLng({ x: location.x, y: location.y });
diagram.findNodeForData(nodeDataArray[i]).Vd.latlong[0] = coordinates.lat; diagram.findNodeForData(nodeDataArray[i]).Vd.latlong[1] = coordinates.lng;
The field “Vd” stores all the properties of the node, including the array “latlong”, which is used to get the location of the node correct, using this binding:
new go.Binding("location","latlong)....
Now I get to my issue, every time I drop a node from the palette on the map it will stay as one would expect, but as soon as the map is moved the will change its position. I know that is because this method is called. diagram.updateAllTargetBindings("latlong");
I figured out what the cause of my issue is. The value inside location is wrong. I always get the same exact value for the location of the node. The picture below shows the value of var location
and below that the value of var coordinates
These two values are always the same. This value is calculated inside “addModelChangedListener”, so way before the item is dropped.
So the easiest way to fix this (in my opinion, correct me if I am wrong) is to calculate the the lat/lng as soon as the item has been dropped on the map.
How can I achieve this?
If there is no way to detect when a node is dropped from the palette, do you see any other solution for my problem?
I hope you guys understand what my issue is, if not I am happy to explain it in more detail.
Best regards!