Since the 1.5RC1 release there is a new way to add non-OGC layers to your application. These layers currently are: Google maps, Yahoo Maps, Virtual Earth and MultiMap. The changes are:
- Use of OwsContext
- Use of BaseLayers
- Less reliance on config.xml
Use of OwsContext
In previous versions Mapbuilder used the WMC standard to store its layer configuration in a context document. However this standard does not allow for non WMS layers. Since the new layertypes are not WMS they would break the WMC compatibility if they would be included into a WMC doc. To solve this problem a new standard is being developed; the OwsContext format. However this has not been finalized yet and as such is subject to changes. This format at its current form allows us to add non-OGC layers to a context doc.
Use of BaseLayers
The 1.5 release is using openlayers as a render engine. The way OpenLayers is structured is that it reuires a special layer which defines how all other layer should behave: the zoomlevels, projection, tilesize etc. This layer is called the BaseLayer. In the WMC, nor in the OwsContext is this concept known. For WMC-based application this is solved by adding a hidden empty baselayer, which takes the configuration options from config.xml and the projection settings from context.xml.
For a OwsContext based application you have more options. Since the layers with a fixed tilescheme, like GMaps, TMS, WMS-C, cannot adept to different settings for resolutions, projections or even tilesize they need to be defining these settings. This means that they need to become a BaseLayer themselves. Obviously there can only be one BaseLayer at a time. Curerntly Mapbuilder only supports one BaseLayer in the OwsContext doc. In the future it will be possible to have multiple BaseLayers configured and the user will be able to chose which of the BaseLayers will be the active one.
Less reliance on config.xml
Since the WMC standard doesn't support things like resolutions, tileschemes etc on needs to define this in the config.xml. This means that if you share the context doc you loose this information. With the OwsContext doc however you can store these settings in the context doc where they belong. If you share your OwsContext doc all the relevant settings will be passed on.
How does a BaseLayer look like in the context doc
Now what does this mean, lets split out:
We define here that it is a BaseLayer in the ows namespace, Mapbuilder will look for a ows:BaseLayer type of layer to decide that the user has a special base layer defined. It will take the first it encounters and ignore all others (for the moment).
Mapbuilder will decide what to do depending on the service type. The current options are: WMS, WMS-C, GMAP, Google, YMAP, Yahoo, VE, Microsoft and MultiMap.
Currently this does nothing, in the future this or the layerId will be used to allow for switching between BaseLayers
Since most of the time the BaseLayer will have a specific tileset, this is the place where it is being defined. It is based on the capabilities document of tilecache
If you want a custom set of resolutions you can define them here. There's no need to do so for the proprietary layers like Google. The resolutions are known to OpenLayers
Here you can define the SRS you want to use. If you use epsg:900913 in combination with on of the proprietary layers it will go for the spherical mercator approach, otherwise choose epsg:4326 to use the old lat-long based approach. See also the OpenLayers wikipage on it
Here you can define the Boundingbox for your baselayer, however it is currently ignored in preference of the normal OwsContext BBox
Here you can define which layers to use, for normal WMS/WMS-C it means just that. For the proprietary layers you have the following options: aerial,satellite for a satellite map road,normal for a road map and by default it will take the hybrid layer with both satellite and roads.
Here you can define the tilesize, default is 256 which works for all proprietary layers
Here you can define the image format for the request. This is only needed for WMS(-C) layers