Ich habe eine Website link text mit dem Api erstellt von der Ordnance Survey erstellt (ich glaube, das heißt OpenSpace), die auf OpenLayers basiert. Ich habe es so, dass Sie auf die Karte klicken können, um eine Markierung hinzuzufügen, und ich möchte dann in der Lage sein, auf die Markierungen zu klicken und sie über die Karte zu ziehen. Gibt es eine einfache Möglichkeit, dies mit OpenSpace oder OpenLayers apis zu tun?Ziehen von Markern mit Ordnance Survey/Openlayers api
Antwort
Mit der OpenLayers API können Sie Markierungen und Funktionen zur Karte hinzufügen. Wenn Sie Features anstelle von Markern hinzufügen, können Sie sie durch Hinzufügen des folgenden Codes ziehbar machen.
var vectorLayer = new OpenLayers.Layer.Vector("Vector Layer");
var osMap = new OpenSpace.Map('map');
osMap.addLayer(vectorLayer);
var modifyFeaturesControl = new OpenLayers.Control.ModifyFeature(vectorLayer);
modifyFeaturesControl.mode = OpenLayers.Control.ModifyFeature.RESHAPE;
osMap.addControl(modifyFeaturesControl);
modifyFeaturesControl.activate();
Damit können Sie Features um eine Karte ziehen. Wenn Sie beim Ziehen von Objekten ein benutzerdefiniertes Verhalten hinzufügen möchten, können Sie Listener auf der Vektorschicht registrieren. Um beispielsweise einen Listener zu registrieren, wenn Features geändert (z. B. verschoben und freigegeben) werden, müssen Sie den folgenden Code verwenden.
vectorLayer.events.register('featuremodified', vectorLayer, function(feature) {
//custom behavior
});
Für eine vollständige Liste der Ereignisse, die die Openlayers api doc angehört werden können OpenLayers api doc
Als einfacher Weg, um zu sehen dies mit der Openlayers Drag Steuerung zu tun ist, die eine Vektorebene als nimmt Ziel.
eine Vektorebene enthält Symbole Angenommen (dies Marker bevorzugt wird, die die Entwickler von OL discourage verwenden), die so genannte Vektoren, können Sie einfach tun:
var drag=new OpenLayers.Control.DragFeature(vectors);
map.addControl(drag);
drag.activate();
Der andere Vorteil der Drag Kontrolle der Verwendung ist dass Sie verschiedene Callbacks verwenden können, die das Feature und die Pixelposition zurückgeben, z. B. onStart und onDrag. zB
var drag=new OpenLayers.Control.DragFeature(vectors,{
'onDrag':function(feature, pixel){
console.log(pixel.x);//this can be used to do something else, such as move another feature
}
});
Weitere Details finden Sie unter http://trac.osgeo.org/openlayers/browser/trunk/openlayers/lib/OpenLayers/Control/DragFeature.js.
- 1. Google Maps API: SetCenter von Markern möglich?
- 2. Verwenden von Markern und Polylinien mit Google Maps api
- 3. Menüpunkte auf Karte mit Markern hinzufügen (google maps api)
- 4. Hinzufügen mehrerer Zeichen zu Markern mit Google Maps API
- 5. Google Maps API v3: Auto-Center-Plan mit mehreren Markern
- 6. Hinzufügen von Markern mit OpenLayers 3
- 7. Ziehen durch restful API mit jQuery
- 8. Facebook API zum Ziehen Bewertungen
- 9. Podio API falsche Daten ziehen
- 10. Wie wechseln Sie mit Google Maps JS API von Heatmap zu anklickbaren Markern?
- 11. Präzise Positionierung von Markern für lat/lon
- 12. Korrekte Skalierung von kreisförmigen Markern in Streudiagramm
- 13. Ziehen von Bildern mit pygtk
- 14. Morphologische Wasserscheide von Markern Filter auf ITK
- 15. Zeichnen einer Kurve mit äquidistanten (Bogenlängen-) Markern
- 16. matplotlib Streudiagramm mit verschiedenen Markern und Farben
- 17. Öffnen Sie einen Google Maps-Link mit mehreren Markern
- 18. Google Maps - Tausende von Markern - JSON
- 19. Hinzufügen von Google-Markern aus JSON-Datei
- 20. Platzieren von Markern in Google Maps
- 21. Docker Remote API Ziehen von Docker Hub private Registry
- 22. Looping von Google Maps-Markern mit eingebettetem Rubin?
- 23. Hinzufügen von benutzerdefinierten Markern dynamisch zum Zuordnen mit OpenLayers
- 24. Auffüllen von Google Map Markern von Knoten Mongodb Modell
- 25. Ist ein NVD3 Liniendiagramm mit Markern möglich?
- 26. Kann Orderbook nicht ziehen, bitfinex api
- 27. Ziehen von XML-Elementen in C# über einen API-Feed
- 28. In Kategorien auf eBay mit XML API ziehen
- 29. Google Map zum Anzeigen von Markern für mehrere Standorte
- 30. Google Maps API V3 - Zwei Standorte mit Markern auf der gleichen Karte
Ich habe nur den obigen Code verwendet und es funktioniert gut abgesehen von einem Problem: Wenn Sie den Marker ziehen und verschieben und dann hinein- oder herauszoomen, verschwindet meine Vektor-Funktion. Irgendwelche Ideen? – nickdos