Commit Graph
100 Commits
Author SHA1 Message Date
ahocevar 77b8688eae Regrouping tests 2013-02-15 23:42:22 +01:00
ahocevar 59fe714fa6 Making the linter happy 2013-02-15 17:44:09 +01:00
ahocevar 8c03abdaa2 Adding ol.source.Vector unit tests 2013-02-15 16:25:47 +01:00
ahocevar 8cc65756bc Only attempt fast lane for AND filters 2013-02-15 16:25:29 +01:00
ahocevar 6b43435262 Merge branch 'master' of github.com:openlayers/ol3 into vector 2013-02-13 12:30:16 +01:00
ahocevar e155f870cd Fixing RTree, and using it for retrieving geometries 2013-02-13 12:29:14 +01:00
ahocevar 4e971b6041 Faster extent + geometry type queries
By maintaining separate R-Trees for each geometry type, we cover
the most critical query from the canvas renderer at higher
speeds. Using the filter's own evaluate method, we can now also
serve arbitrary queries, but they won't be fast.

Still needs unit tests.
2013-02-06 16:42:55 +01:00
ahocevar 619803cdeb More goog.requires fixes 2013-02-06 16:36:42 +01:00
ahocevar a13e6bdfda Merge branch 'master' of github.com:openlayers/ol3 into vector 2013-02-06 16:27:45 +01:00
ahocevar 61e4452c83 Adding missing and removing unused goog.requires 2013-02-06 16:26:24 +01:00
ahocevar 089b7013c2 Merge branch 'master' of github.com:openlayers/ol3 into vector
Conflicts:
	src/ol/renderer/canvas/canvasrenderer.js
	test/ol.html
2013-02-05 17:28:36 +01:00
ahocevar 386b97cf9a Merge branch 'master' of github.com:openlayers/ol3 into vector
Conflicts:
	src/ol/renderer/canvas/canvasrenderer.js
	test/ol.html
2013-02-05 17:17:09 +01:00
ahocevar dafa48da2e Using spatial index and combined filters
This should significantly speed up feature access. Needs unit
tests.
2013-02-04 22:51:58 +01:00
ahocevar c58f0afcc3 New R-Tree struct for spatial indexing.
This needs unit tests.
2013-02-04 22:50:59 +01:00
ahocevar 428793cd7c New filters for extent and logical filtering
These need unit tests.
2013-02-04 22:50:21 +01:00
ahocevar 43dd9ca68c Don't use unshift 2013-02-02 12:29:08 +01:00
ahocevar 9a0f509a94 Use objects instead of arrays for geometry type cache
Also trying to reference features directly here instead of
storing feature ids in the index. We'll see if this is good when
we have an index for tile coords as well and want to filter
with multiple filters, accessing multiple indices.
2013-01-30 18:03:27 +01:00
ahocevar e61c26830e Manage tile cache
This change implements a LRU policy for tile cachint, and keeps
128 tiles in the cache by default.
2013-01-30 17:09:43 +01:00
ahocevar 1ecbc36a39 Merge branch 'master' of github.com:openlayers/ol3 into vector 2013-01-30 15:54:24 +01:00
ahocevar 65b3bb70a1 Some optimizations
* Tiles are now cut out of the sketch renderer in a separate
  pass. This ensures that point features at tile borders appear
  at both sides of the border. However, if such features get
  added in a later tileRange rendering pass, tiles from a
  previous rendering pass will still not have that feature.
* The tile canvas is only created once, and cloneNode(false) is
  used to get a canvas for a new tile.
2013-01-25 16:46:12 +01:00
ahocevar b0a7badc8f Started on proper date line wrapping
What we want in the end is vector tiles repeated just as raster
tiles. This change only avoids repeated tiles with the same
content being rendered and stored in the cache.
2013-01-24 17:29:21 +01:00
ahocevar fe605ceebb Better, but still not all the way there 2013-01-24 16:21:30 +01:00
ahocevar 4a54cc69ce Tiled vector rendering
This needs more work still - see inline TODOs. It also has a
major bug - rendered vector features do not scale and do not
change their offset during panning. So only the initial view is
correct.
2013-01-23 21:37:06 +01:00
ahocevar 4e6b864e27 Making default symbolizers compiler safe 2013-01-22 14:09:04 +01:00
ahocevar 16865fc1fa Removing no longer needed Tiled Vector Source. 2013-01-22 13:24:37 +01:00
ahocevar 300c1048bd Cache and bucket fixes 2013-01-21 15:56:35 +01:00
ahocevar e060498fad Fixing compiler errors (mostly caused by typos) 2013-01-21 13:41:18 +01:00
ahocevar d3e63bc98a Basic feature implementation 2013-01-21 12:16:04 +01:00
ahocevar d0d397f98f Tiled vector source
This source has features and provides tiles with the feature
geometries rendered, using the feature symbolizers. Needs more
work because it is still very unefficient, because it renders
all feature geometries to all tiles, and uses a collection of
features, which we do not have yet.
2013-01-20 21:23:19 +01:00
ahocevar 8a38f9aa9d Merge branch 'master' of github.com:openlayers/ol3 into vector 2013-01-16 16:34:59 +01:00
ahocevar 7c05587aed Merge pull request #114 from ahocevar/resolutions
Use validity extent to generate default resolutions. r=@twpayne,@elemoine
2013-01-16 07:17:10 -08:00
ahocevar 87ce763ccb Use validity extent to generate default resolutions
Previously, the TiledWMS source generated a resolutions array
derived from the world extent in meters, to match the default
Web Mercator resolutions of the map. This wouldn't work for
projections with distance units different than meters. It is
better to commit to a default resolutions array where zoom level
0 is the validity extent of the projection (not the Web Mercator
world extent!) at a 256 pixel tile size.
2013-01-14 16:10:55 +01:00
ahocevar 3c305db4a4 Canvas tile renderer - first cut
Untested and no styling
2013-01-04 18:47:33 +01:00
ahocevar 3d84571043 Use WebGL now that server sends CORS headers (see #75) 2012-11-03 10:33:20 +01:00
ahocevar 13e48787a3 Merge pull request #79 from ahocevar/projection
Projection handling improvements. r=@twpayne, @elemoine
2012-10-31 10:13:17 -07:00
ahocevar eb4a8683e2 Projection handling improvements
* The Map's private createProjection_ method is now a public
  method of the Projection. It is also used by TiledWMSSource
  to calculate the appropriate projection from the user
  configuration.
* ol.Projection.addProjection now adds the transformation for
  the source == target case. This makes it easy for the user
  to create custom projection maps without including proj4js and
  without adding a custom transformation, as long as the
  userProjection equals the projection.
* The TiledWMSSource now uses the same default resolutions as
  the map (i.e. the OSM resolutions)
* The modulo calculation for wrapping extents now works for all
  grid configurations, by not calculating the number of columns
  based on an assumption about the way the zoom levels relate to
  resolutions.
* The wms-custom-proj example now shows how to properly
  configure a custom resolution, i.e. by using the validity
  extent of the projection as its extent.
2012-10-31 13:17:58 +01:00
ahocevar f4139f208a Merge pull request #74 from ahocevar/tiled-wms
Adding tiled WMS source. r=@twpayne,@elemoine
2012-10-29 01:47:20 -07:00
ahocevar e157d17ab7 Addressing review comments regarding typeDef 2012-10-29 09:44:25 +01:00
ahocevar 393bb36784 Removing standalone example 2012-10-29 09:36:08 +01:00
ahocevar b170fa3d16 Using DOM renderer; no custom extent for layers
The server does not send CORS headers, so we cannot use the
WebGL renderer. Since the layers use the projection's extent,
it is not necessary to specify the extent.
2012-10-29 09:34:53 +01:00
ahocevar 0c77aacf33 proj4js externs are not necessary 2012-10-29 09:33:00 +01:00
ahocevar e672083027 Indentation and line break fixes 2012-10-28 23:59:36 +01:00
ahocevar e5308fec40 No extent magic
Setting the extent on a tile source now only means that tiles
won't be drawn outside that extent. Now the only way to specify
the origin of the tile grid is to provide a custom tileGrid. By
default, the grid origin is the top left corner of the
projection's extent.
2012-10-27 17:28:08 +02:00
ahocevar b872b5a74f Cross origin handling to make example work in Firefox
The WMS used in the example does not send CORS headers (I think
not many WMS services do). It seems that the WebGL renderer
needs script access to the image data, so the example only works
with the DOM renderer in Firefox.
2012-10-27 09:16:09 +02:00
ahocevar 433b12c39a Using the projection's extent for resolutions math by default
This ensures that maps with WMS layers with different extents
do not scale the tiles differently for each layer when the
default tileGrid is used. Note that it is always possible to
configure WMS sources with a custom tileGrid.
2012-10-26 22:51:30 +02:00
ahocevar 084506cdb5 Adding tiled WMS source
As shown in the example, this adds support for tiled WMS layers.
2012-10-26 21:36:30 +02:00
ahocevar 69859b415b More MapBrowserEvent improvements
Now we use the browser's native dblclick event on pointer
devices, and we fire dragstart and dragend only if we're really
dragging, and not on mousedown/touchstart and mouseup/touchend.
2012-09-29 18:54:29 +02:00
ahocevar 877971185f MapBrowserEvent simplifications and improvements
We don't register two listeners for mouseup and touchend any
more. And instead of using the native click event on touch
devices, we react on touchend, to make clicking more responsive.
On pointer devices, the underlying native event of a dblclick
event is now a click event.
2012-09-29 16:51:08 +02:00
ahocevar 6267100871 Move customizations out of arrow_box CSS 2012-09-29 16:48:22 +02:00
ahocevar 2b53481932 Making Vienna's location more accurate 2012-09-29 09:54:34 +02:00
ahocevar dcc3fdde96 Fixing popup in example 2012-09-28 19:19:46 +02:00
ahocevar 467fef8875 Updating readme
File urls work fine now, so using a HTTP server has become
optional.
2012-09-28 17:07:33 +02:00
ahocevar 163737d3de Adding popup to full-screen example 2012-09-28 16:47:55 +02:00
ahocevar 6b395cafb5 Stop click event, as previously promised
This should have gone in with 3910318f1b.
2012-09-28 16:47:54 +02:00
ahocevar 82058412a1 Bringing label markup back
Also with a bit of css, we can make the label invisible before
it gets added as overlay to the map.
2012-09-28 14:44:36 +02:00
ahocevar b233b8e1a5 Making sure that position:absolute is set
Positioning of overlays is only possible when position:absolute
is set on the element. So we set it programmatically now.
2012-09-28 14:44:35 +02:00
ahocevar 3910318f1b Merge pull request #30 from openlayers/overlay
Introducing ol.overlay.Overlay and an overlayContainer. r=@twpayne
2012-09-28 04:05:21 -07:00
ahocevar 3d62b67172 Introducing ol.overlay.Overlay and an overlayContainer
ol.overlay.Overlay can be used to bind DOM elements to a
coordinate on the map. It has positioning options to support
e.g. popups or image markers that have an anchor at the bottom
and an unknown size.

The overlayContainer stops propagation on mousedown and
touchstart events, so clicks and gestures on overlays don't
trigger any MapBrowserEvent. To make this work reliably, we now
only fire dblclick in mapbrowserevent.js when there was a
previous mousedown or touchstart. The default container for
controls is now the overlayContainer.
2012-09-28 13:01:56 +02:00
ahocevar 9536ba8e14 Common place to store browser features
The ol.BrowserFeature object is supposed to provide all detected browser features in a central place.
2012-09-27 17:09:19 +02:00
ahocevar 26e3179b2e Making linter and Travis happy 2012-09-27 12:18:05 +02:00
ahocevar caaec7c366 Use the map's zoom method instead of our own
This also allows us to get rid of the resolutions constraint and configuration.
2012-09-27 12:05:53 +02:00
ahocevar 1b18dbedb7 Dispatch MapBrowserEvent before interactions get it
By doing so, application event handlers can preventDefault on the event, and interactions won't get the event any more. This means that interactions are default behavior that can be prevented by application event handlers.
2012-09-27 09:54:16 +02:00
ahocevar 2991fa1178 Adding important comment 2012-09-26 22:39:21 +02:00
ahocevar d6f6b828f1 preventDefault on mousedown
This is needed to avoid native image dragging.
2012-09-26 18:48:57 +02:00
ahocevar 303960731c CSS for previous commit 2012-09-26 18:33:07 +02:00
ahocevar e390ff80ea Adding zoom control 2012-09-26 18:27:45 +02:00
ahocevar 47c343ce4f We can rely on the click event
No need to use the mousedown/touchstart event here, because the click event gives us both clientX/clientY and button on touch devices.
2012-09-26 18:27:12 +02:00
ahocevar 4257f5c7c6 Removing unneeded preventDefault calls 2012-09-26 18:26:11 +02:00
ahocevar c7a32b33da Fixing indentation 2012-09-26 15:11:47 +02:00
ahocevar 78c380c9a5 Type cast to make the compiler happy 2012-09-26 15:05:52 +02:00
ahocevar fa16adec02 Making more use of Closure 2012-09-26 14:38:29 +02:00
ahocevar bdd8a75123 Remove the box also if we don't zoom 2012-09-26 13:03:41 +02:00
ahocevar 3bd204fb6a DragBox control provides visual shiftdragzoom feedback
Adding a new DragBox control and using it in the shiftdragzoom interaction to provide visual feedback of the zoom box. The control is nicely separated from the interaction - it only draws the box and does not perform any action.
2012-09-26 12:50:14 +02:00
ahocevar 86336b42e6 Ignoring index.html instead of debug.html 2012-09-25 19:47:26 +02:00
ahocevar 36a8dd81ee Missing change from previous commit
This should have gone in with ef383ee7b6.
2012-09-25 19:35:12 +02:00
ahocevar 3c099a96b7 No longer tap-selecting elements on touch devices
This finalizes the effort to improve map browser event handling.
2012-09-25 19:32:08 +02:00
ahocevar ef383ee7b6 Examples using a script loader
This makes it possible to run examples hosted on hosts other than localhost. To get that version by default, debug.html has been renamed to index.html.
2012-09-25 19:06:29 +02:00
ahocevar 5a97655983 Optimizing touch device handling
The native event of the touchstart/mousedown event needs to be cloned; change includes some compiler optimizations.
2012-09-25 18:30:23 +02:00
ahocevar ce977e5364 Map browser event handling for touch devices
By handling click, dblckick and drag sequences in MapBrowserEvent, we can overcome closure issues with touch events. In particular, these issues were double drag events (from mousemove and touchmove) and a missing dblclick event on touch devices.
2012-09-25 17:28:01 +02:00
ahocevar b151304630 Prevent default on mousedown and touchstart for all renderers
By doing this on the map renderer, we do not need to duplicate code for the webgl and dom renderers.
2012-09-25 17:28:01 +02:00
ahocevar 6b8e14c623 Don't trigger extra drag events on touch devices. 2012-09-25 08:30:57 +02:00
ahocevar 002e23cb74 Satisfy latest Closure library/tools. 2012-09-24 17:59:34 +02:00
ahocevar 78f8ed04dd Fixing typo. 2012-07-18 08:10:44 +02:00
ahocevar 6c9ef26c79 Using safe unicode notation. 2012-07-18 08:10:35 +02:00
ahocevar fd2ac782cf Using high level map event instead of browser event. 2012-07-13 17:54:34 +02:00
ahocevar 1c07c38a70 Using minus sign instead of ndash. 2012-07-13 17:53:33 +02:00
ahocevar f4532f1548 Completing tests for map handlers. 2012-07-12 23:48:13 +02:00
ahocevar ba986e536d We decided to be explicit about bubble/capture. 2012-07-12 23:47:37 +02:00
ahocevar 8183164298 The underlying event will be needed frequently.
But there will also be events that don't have an underlying event, so we make it optional.
2012-07-12 23:47:16 +02:00
ahocevar 3cc069186c Allow for using a different set of default behaviors.
The default behavior of dragging and wheel zooming feels specific to 2D maps. So I think it makes sense to introduce a special type of controls (ol.control.DefaultControl) that implement default behaviors. This change also re-introduces the Navigatin control, which is a container for the default behaviors that were previously defined in the map handlers. Maybe this control needs to be renamed to Navigatin2D in the future, and there could be a different Navigation control for 3D maps.
2012-07-12 20:51:47 +02:00
ahocevar 42c4c9d869 No need to pass the element to the constructor.
If MapHandler subclasses could live without a map, it would make sense to have a constructor with a target and an element. But because the target is always the map, and the handler need to know about the map for performing default behavior, we always assume the map's viewport as element.
2012-07-12 20:44:32 +02:00
ahocevar f672303f0a New MapHandler base class; better API docs 2012-07-12 15:21:15 +02:00
ahocevar 1ad915b428 Shuffling resources; better variable names; better type declarations. 2012-07-12 13:43:47 +02:00
ahocevar d76eea8ac4 Fixing tests. 2012-07-09 08:26:25 +02:00
ahocevar 7bf1ffe606 Nice improvement of the wheel zooming experience. 2012-07-08 20:27:10 +02:00
ahocevar 4132ded263 Merge branch 'events' 2012-07-08 12:19:32 +02:00
ahocevar ca2414c9d6 Simplify controls by registering click events on own elements.
This makes sense for all controls that provide buttons or similar UI elements that don't interfer with map interaction.
2012-07-08 12:17:11 +02:00
ahocevar a38a331085 Allow for events on other elements than the map viewport.
Not registering browser events as priority events makes it easy for controls to preventDefault or stopPropagation when events are registered on children of the map viewport element.
2012-07-08 12:14:26 +02:00
ahocevar e67e9049ca preventDefault and stopPropagation convenience functions.
These functions can directly be used as browser event listeners.
2012-07-08 12:12:19 +02:00
ahocevar e8ac3f1a6b preventDefault for mousemove and touchmove.
This avoids panning of the browser page when drag-panning the map.
2012-07-08 11:55:31 +02:00