From a2a0bcbba5b9d4ab79274c176c3f34e8523722af Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Mon, 25 Sep 2017 23:30:08 -0700 Subject: [PATCH] Destroyed API & Defaults Discussion (markdown) --- API-&-Defaults-Discussion.md | 89 ------------------------------------ 1 file changed, 89 deletions(-) delete mode 100644 API-&-Defaults-Discussion.md diff --git a/API-&-Defaults-Discussion.md b/API-&-Defaults-Discussion.md deleted file mode 100644 index 1be144a..0000000 --- a/API-&-Defaults-Discussion.md +++ /dev/null @@ -1,89 +0,0 @@ -**Outdated!** - -OpenLayers 3 should provide an API that makes it easy to accomplish common use cases. People who do not need to leverage the full functionality should be provided fast lanes for a leaner and easy to use configuration. Defaults should be set in the right places to avoid duplicated code. - -This document is work in progress. At the time of writing, it reflects @ahocevar's thoughts on a few aspects of the library that come to mind when thinking about API and defaults. - -## Map with WMS layer (tiled) in default projection (EPSG:3857) - - new ol.Map({ - layers: [ - // suitable layer type can be chosen based on the source - new ol.source.TiledWMS({ - url: '/geoserver/wms', - params: { - 'LAYERS': 'usa:states' // would be nice without quotes for the key - } - }) - ], - // would be even nicer to provide center and zoom as direct map config options - view: { - center: [47, 15], - zoom: 9 - } - }); - -## Map with custom projection and a WMS layer - - new ol.Map({ - layers: [ - new ol.source.TiledWMS({ - url: '/geoserver/wms', - params: { - 'LAYERS': 'usa:states' // would be nice without quotes for the key - } - }) - ], - view: { - projection: { - code: 'EPSG:31256', - units: 'meters', - // validity extent from http://spatialreference.org/ - extent: [-115317.3972, 151511.8020, 64307.1064, 432456.2246] - }, - center: [47, 15], - zoom: 3 - } - }); - -The layer source should not need a projection configuration - it should get it from the view. With the projection's extent, the layer source should be able to create a default tile grid. The map's zoom levels will be derived from the projection's extent as well. - -## Map with custom projection and single image WMS layer - -Exactly the same as above, only with `ol.source.SingleImageWMS` instead of `ol.Source.TiledWMS`. It should not be necessary to configure the layer source with a resolutions array, and a single image source should be able to serve any resolution that the map uses. - -## Map with custom projection, WMS layer with custom tile grid - - - new ol.Map({ - layers: [ - new ol.source.TiledWMS({ - url: '/geoserver/wms', - params: { - 'LAYERS': 'usa:states' // would be nice without quotes for the key - }, - tileGrid: { - maxExtent: [-100000, 160000, 60000, 430000], - resolutions: [1000, 500, 200, 100, 50, 20, 10, 5, 2, 1] - } - }) - ], - view: { - projection: { - code: 'EPSG:31256', - units: 'meters', - // validity extent from http://spatialreference.org/ - extent: [-115317.3972, 151511.8020, 64307.1064, 432456.2246] - }, - center: [47, 15], - zoom: 3 - } - }); - -Since the TileGrid is a very complex thing, and most use cases except ArcGISCache and WMTS use the same grid extent for each resolution, it makes sense to provide a convenience configuration with a common maxExtent and a set of resolutions. - -## Thoughts on defaults - -Looking at the current code, there are still more than one places with Web Mercator related defaults. The central place for projection related defaults should be the `ol.projection` package. If layer sources can lazily create a TileGrid upon rendering, it will be possible to use map defaults for layer sources. - -The concept of user projections works best in the context of a map. Classes like Coordinate or Extent do not necessarily need to know about the user projection if the map (or the view) provides extent and center related getters. \ No newline at end of file