Reputation: 15909
it seems that i have a simple requirement but my knowledge on OpenLayer seems to limited.
I have a need to place 1 feature inside a map and after placing it, drag this feature to the right place and then get the Lat / Long coordinates. It would be nice that i can delete the feature to start over..
But to start with: I have managed to place a feature, but am not able to switch from drawfeature to dragfeature. If there a better ways to achieve my goal i am more then happy to learn!
// create the map variable
map = new OpenLayers.Map("map");
// create layers
var mapLayer = new OpenLayers.Layer.OSM(); // openstreetmap
var vectorLayer = new OpenLayers.Layer.Vector("Vector", {styleMap: styleMap}); // vector
// add the layers to the map
map.addLayer(mapLayer);
map.addLayer(vectorLayer);
map.addControl(new OpenLayers.Control.MousePosition());
var drawFeature = new OpenLayers.Control.DrawFeature(vectorLayer, OpenLayers.Handler.Point);
var dragFeature = new OpenLayers.Control.DragFeature(vectorLayer);
map.addControl(drawFeature);
drawFeature.activate();
vectorLayer.onFeatureInsert = function () {
drawFeature.deactivate();
// how to switch to drag feature???
// dragFeature.activate(); does not seem to work
}
...
map.setCenter (lonLat, zoom);
Thanks Marco
Upvotes: 0
Views: 3591
Reputation: 3524
You need to add the dragFeature control to your map:
map.addControl(drawFeature);
Do this where you add the drawFeature control, then the activate() would work as it is.
Upvotes: 2