This page aims to organize ideas around the next major version of OpenLayers. General goals for 3.0 are discussed here. Detailed proposals should be organized in their own pages (under the 'three' category).
General goals for OpenLayers 3 are described below.
The library should be written using coding patterns and syntax that reduces the overall size of the library. This includes reducing dependencies (and inheritance) where not strictly necessary and considering patterns that allow for better minimization (through obfuscation) by increasing the use of private members. While the aim is to allow for smaller builds, compact syntax should not compromise code readability.
Map dragging should be optimized. Evaluate methods for improving performance of basic map navigation options including delayed or asynchronous event firing and limiting the number of elements with browser event listeners.
Some decisions about the OpenLayers API were made early on in the development of the library. Subsequent work and experience has highlighted aspects of the API that deserve clean up. Some of these are already marked in the code as FIXME 3.0 or similar.
Separate UI from Core
The library core should minimize generation of DOM elements that represent visual UI components.
The core should focus on the following:
- layer management - tile handling & vector rendering
- map & layer related event handling
- server/client communication - generating requests and parsing responses
- geometry digitization & editing
A separate OpenLayers UI lib should focus on the following:
- rendering of buttons and other widgets
- presenting map information that is not rendered as features (layer properties, feature attributes)
- gathering user input for map configuration, queries, etc.
Specific proposals for the 3.0 release should be described in separate pages. Pages named like three/foo will be listed here.
Where it makes sense to include patches or describe ideas in tickets, create a ticket targeted at the 3.0 Milestone. Those tickets will be listed here.
- improved popups
- Implement Google API on top of OpenLayers
- Add Ability to Hide/Show() BaseLayer
- comb through the code and fix all the "TBD 3.0" commented issues
- Remove 'url' param from OpenLayers.Tile
- store evt on handler
- add property isOnTop to Layer
- Add ability to navigate in the time dimension for layers
- Switch Control
- OpenLayers.Util.pagePosition should return OpenLayers.Pixel
- *featureadded* event for DrawFeature control
- Format.GML: parse srsName
- Move Sizing of OverviewMap and LayerSwitchers' Hide/Show Buttons to CSS
- remove style property in favor of symbolizers
- remove context from Rule and Style
- support more information on feature attributes
- allow different properties on map and layers
- have more consistent naming conventions for events
- move OpenLayers.Util.indexOf to OpenLayers.Array.indexOf
- have consistent writing of URL versus Url throughout the library
- Format read should return an object with a features array
- Deprecate the theme map option
- remove deprecated Control.MouseDefaults
- remove deprecated Control.MouseToolbar
- commercial API layers should only be accessible via sphericalMercator?
- control.handler and control.handlers
- create protocol for WM(T)S GetFeatureInfo
- Refactor Layer.Grid into separate Grid class
- deprecate '$' function
- getParameters does not deal correctly with duplicate parameter names
- Impossible to put a Google layer over a standard layer
- Create a ProviderApi class to handle embedding of BYGO map provider APIs
- constructor for Scale Control differs from normal controls
- remove OpenLayers.Control.PanZoom
- Resizing map causes markers to shift relative to VirtualEarth layer
- remove OpenLayers.Map.TILE_WIDTH and OpenLayers.Map.TILE_HEIGHT