Commit Graph

222 Commits

Author SHA1 Message Date
ahocevar
4e85322abb Minor stylistic clean-ups and more symmetry 2013-11-13 00:44:38 +01:00
ahocevar
9067260a44 Fixing api doc comment 2013-11-13 00:44:38 +01:00
ahocevar
39a5a8e291 Refactoring for better layer management
The only feature on the temporary layer is now the
vertexFeature, and the temporary layer's style is dynamically
changed to the style of the layer whose segment is being edited
(the topmost layer if more than one segment are being edited).
With this simplification, we can also put all segments on a
single RTree. Finally, we no longer rely on structures set on
layers - all we need is now on the instance itself.

This refactoring also changes the way we define layers to
participate in modification - by using an array or a filter
function, or assuming all layers if no layers property is set.
2013-11-13 00:44:38 +01:00
ahocevar
319f78fb94 Using new squaredDistanceToSegment and closestOnSegment 2013-11-13 00:44:37 +01:00
ahocevar
0e673a492a Use accessor for components 2013-11-13 00:44:37 +01:00
ahocevar
c669dda2b1 Do not create a vertexFeature with [NaN, NaN] coordinates
The RTree cannot work with NaN coordinates. So instead of
preparing a vertexFeature before we know a coordinate, we now
lazily create the vertexFeature.
2013-11-13 00:44:37 +01:00
ahocevar
498738d22a Parent information no longer needed
Now that we can do setCoordinates, we no longer need to create
new geometries and assign them to a parent.
2013-11-13 00:44:37 +01:00
ahocevar
1c3b839a6f Use new setCoordinates methods 2013-11-13 00:44:36 +01:00
ahocevar
fec638e8be Write modifications back to the original layer
With the feature's getOriginal() and setOriginal() methods, an
undo tree can be maintained now.
2013-11-13 00:44:36 +01:00
ahocevar
a3b18bf16e Do not split segments while in the loop
In combination with the additional squaredDistanceToSegment
check we can ensure that a future vertex is only created on one
segment per feature, and only on the segment that it appears on.

This change also renames the misleading dragVertices_ member to
dragSegments_.
2013-11-13 00:44:36 +01:00
ahocevar
ff17eb53d4 Separate add listener from method that adds index 2013-11-13 00:44:36 +01:00
ahocevar
292b851a74 Adding ModifyFeature interaction
This is a first draft. The way geometry changes are handled for
now is a bit clumsy. Both updating the feature cache RTree and
making the layer aware of feature and geometry changes could be
handled in a smarter way if these changes would be made through
the layer instead of directly on the geometry or feature.
2013-11-13 00:44:36 +01:00
Tim Schaub
05b9922861 Tests for draw interaction
The tests revealed that polygons can be drawn with counter-clockwise exterior ring order.  In the polygon constructor, we enforce clockwise winding for exterior rings.  So after drawing, we pass polygon coordinates back to the constructor before adding feature to the target layer.
2013-11-12 16:06:42 -07:00
Tim Schaub
5a898884ec Use geometry type enum for configuring draw interaction
This allows us to cast single-part geometries to multi-part types before adding features to the target layer.  This doesn't yet allow for drawing multi-part geometries with multiple parts.  That can be handled separately.
2013-11-12 11:51:41 -07:00
Tim Schaub
8194ba9f0a Remove setMode method from interaction in favor of add/removeInteraction
This makes the example a bit more awkward, but eventually adding and removing interactions will be the job of an editing control.
2013-11-12 10:30:37 -07:00
Tim Schaub
62b44f3c73 Add click tolerance to allow dragging while drawing 2013-11-12 10:30:37 -07:00
Tim Schaub
e3faa76770 Add method to abort drawing 2013-11-12 10:30:37 -07:00
Tim Schaub
4e98e86b14 Stop dblclick propagation while editing 2013-11-12 10:30:37 -07:00
Tim Schaub
048dec1644 Updated sketch style 2013-11-12 10:30:36 -07:00
Tim Schaub
7c197252ed Ensure drawing is not finished prematurely 2013-11-12 10:30:36 -07:00
Tim Schaub
45ba000df5 Pop off last point from linestring 2013-11-12 10:30:36 -07:00
Tim Schaub
b5cc35ee04 Snap to finish with configurable tolerance 2013-11-12 10:30:32 -07:00
Tim Schaub
ea6500ecd0 Finish lines by clicking last point 2013-11-12 10:29:29 -07:00
Tim Schaub
d821f227ba Add point at head of drawing 2013-11-12 10:29:29 -07:00
Tim Schaub
b3487ad30e Draw interaction 2013-11-12 10:29:21 -07:00
ahocevar
0ed208b710 Make renderIntent private and add a getter 2013-11-11 22:07:18 +01:00
ahocevar
03e20ce6f1 Do not fail on non-vector layers 2013-11-09 16:12:13 +01:00
ahocevar
26c8c954c3 Make selectedFeaturesFilter available to other components 2013-11-09 16:03:30 +01:00
ahocevar
d9fd459654 Do not use a temporary layer for selected features 2013-11-09 14:15:35 +01:00
ahocevar
7cf636147b Call setRenderIntent on the feature, not the layer 2013-11-09 14:15:35 +01:00
Tim Schaub
009f7b53a1 Make interactions event targets 2013-11-07 16:39:05 -07:00
Tim Schaub
7d2d68c011 Give interactions a reference to the map
This is in line with what we do for controls and overlays.  A follow-up change will add calls to `setMap` when interactions are added to a map.
2013-10-31 09:25:52 -06:00
Éric Lemoine
8402eee0c3 Map "click" event renamed to "singleclick"
As discussed with @tschaub in #1195.
2013-10-31 09:37:16 +01:00
Éric Lemoine
a85b82090d Emulate click events only on mouse "action"
`click` events are fired only if the mouse action button is pressed. This prevents `click` events from being fired when the middle mouse button is used.

Also, without this commit, in Chrome with emulated touch events enabled, double-clicking the map doesn't zoom the map. This is because `ol.BrowserFeature.HAS_TOUCH` is `false` in that environment. The commit fixes it by testing `isMouseActionButton` on mouse devices only.
2013-10-30 13:16:09 +01:00
Frederic Junod
a9159ecac3 Rename ol.interaction.condition to ol.events.condition 2013-10-30 12:13:44 +01:00
ahocevar
4b7b95fc2f Handle dragend after resetting view hint and dragging flag
When we start dragging, we first handle dragstart and then set
the INTERACTING view hint and the dragging flag. To end dragging
in a symmetric manner, we have to first reset the INTERACTING
hint and dragging flag, and then handle dragend.

This flaw becomes obvious when using an interaction where no
animation is performed after the interaction. This can be seen
in the style-rules example when using the dragzoom interaction
(i.e. zoom using a drag box): the vector renderer will not
render the new resolution, because the INTERACTING view hint is
still set when the zoom box dragend is handled.
2013-10-30 11:45:34 +01:00
Paul Spencer
bada596b45 Add default stability level to docs of exported things. 2013-10-24 18:20:24 -04:00
Frederic Junod
9ffabb481c Rename offset* attributes to delta* 2013-10-14 14:22:51 +02:00
Frederic Junod
ef97da2b77 Use getPixel function instead of offset from event 2013-10-11 07:35:27 +02:00
Tom Payne
b533cad031 Only install animations if duration > 0 2013-10-08 14:35:04 +02:00
Tom Payne
c6df48e424 Add zoomDuration option to interaction defaults 2013-10-08 14:35:04 +02:00
Tom Payne
b1ed63ebf8 Make touch zoom animation duration configurable 2013-10-08 14:35:04 +02:00
Tom Payne
6c0d4cddad Make mouse wheel zoom animation duration configurable 2013-10-08 14:35:03 +02:00
Tom Payne
1863109ac8 Make keyboard zoom animation duration configurable 2013-10-07 15:41:00 +02:00
Tom Payne
93b33589a1 Make double click zoom animation duration configurable 2013-10-07 15:39:52 +02:00
Frédéric Junod
948735f948 Merge pull request #1075 from fredj/center-constraint
Add ol.CenterConstraint
2013-10-02 02:54:17 -07:00
Frederic Junod
680f5cbb5a Constrain center in ol.interaction.TouchPan 2013-09-30 10:37:02 +02:00
Tom Payne
2e395e4530 Constrain center in ol.interaction.DragPan 2013-09-30 10:17:24 +02:00
Tom Payne
92f7f14744 Constrain center in ol.interaction.Interaction.pan 2013-09-30 10:17:24 +02:00
ahocevar
f8e891ff15 Making the condition for adding to selection configurable 2013-09-27 11:45:15 +02:00