The `window.location.search` string includes the "?" symbol. Without this change, `createFromQueryData` only works if the "renderer" parameter is not in first position (see 4037bafc45).
* 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.
This rather large commit refactors the build system to solve a number of
problems:
- Object literal types are now declared in just one place
- There are no more circular dependencies
- There is no need for concealed subclasses in build-standalone mode
When building in standalone mode, you need to include the source in
build/src/external. This declares object literal types as externs so
that their properties are not renamed.
When building with the application, you need to include the source in
build/src/internal. This declares object literal types as typedefs so
that their properties can be renamed and removed.
Note also that ol.MapOptions has been merged into ol.Map, with some
renaming.
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.
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.
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.
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.