2017-02-06 2 views
0

ich eine Anwendung entwickelt haben, ermöglichen, unterstützen Zeichnung etwas wie Linien oder Punkte und das Hinzufügen einiger Tags auf der Karte mit Openlayers 3.Wie „Snapping“ mit „Select“ Interaktion in Openlayers 3

Viele existierende Funktionen in Mit OL3 kann ich etwas zeichnen und verändern.

Aber wenn ich etwas auswählte, das ich zeichnete, fühlte ich die Notwendigkeit einer Schnappfunktion, um mich leichter auszuwählen.

Leider aktuelle OL3 unterstützt die nur für die Zeichnung und Modifizieren schnappen, wie unten:

var draw = ol.interaction.Draw({features: some_features}); 
var snap = ol.interaction.Snap({featrues: some_features}); 
map.addInteraction(draw); 
map.addInteraction(snap); 

Eigentlich habe ich festgestellt, dass der Fang Werke von ol.interaction.Draw-ol.interaction ersetzen .Wählen Sie, weil ich etwas auswählen kann, das ich zeichne, wenn ich Punkte von ihnen auseinander klickte. Aber der Mauszeiger raste nicht an ihnen.

Also, wie kann ich ausgewählte Interaktion mit Fangfunktion in OL3 implementieren?


Einige Codes hinzugefügt, um Details zu erklären.

Siehe den Link: https://jsfiddle.net/keltpower0/sej6z2q4/1/

Nachdem Sie einige Linien zeichnen, sollten Sie die sehr Punkt klicken, wo Linien platziert werden, wenn Sie diese Zeilen aus.

Ich möchte noch einfacher, diese Linien wählen mit Funktion schnappen, wie, wenn ich den Mauszeiger in der Nähe von Linien bewegen, wird der Zeiger „automatisch“ snap zu den Linien

Antwort

1

Select mit schnapp klingt ein bisschen komisch für mich. Was ist mit der Option hitTolerance der ausgewählten Interaktion?

+0

Bitte lesen Sie meine Kommentare. Ich denke, die Funktion, die ich vermutete, ist nicht so verdrahtet ... –

+0

Siehe https://jsfiddle.net/sej6z2q4/3/ für aktualisierte Auswahl Interaktion mit 'HitTolerance'. Der Browser erlaubt es nicht, den Cursor zu bewegen, so dass Sie nicht wie gewünscht "einrasten" können. Aber mit größerer 'HitTolerance' ist es viel einfacher, kleine Features auszuwählen. – tonio

+0

Gibt es eine Möglichkeit, das Fangen mit select interaction zu ermöglichen, wie im Fall von draw + snap interaction? so: http://openlayers.org/en/latest/examples/snap.html –