Files
openlayers/notes/2.12.md
2011-12-29 14:39:34 -07:00

99 lines
5.7 KiB
Markdown

# Behavior Changes from Past Releases
## Function return values
[Previously][prev] a few functions in the library displayed error messages and returned `undefined`, `null` or `false` if the parameters passed in were bad. In 2.12 these functions now just throw an error/exception. People relying on return values to know if a function call is successful may need to change their code. Here are the modified functions:
* `OpenLayers.Bounds.add` throws a `TypeError` exception if `x` or `y` is null
* `OpenLayers.LonLat.add` throws a `TypeError` exception if `lon` or `lat` is null
* `OpenLayers.Pixel.add` throws a `TypeError` exception if `x` or `y` is null
* `OpenLayers.Filter.Comparison.value2regex` throws an `Error` exception if `wildcard` equals to `"."`
* `OpenLayers.Layer.PointTrack.addNodes` throws a `TypeError` exception if `endPoint` isn't actually a point
* `OpenLayers.Layer.Vector.getFeatureFromEvent` throws an `Error` exception if the layer has no renderer
[prev]: https://github.com/openlayers/openlayers/commit/6e9a3e4c13e00c29daf28efd92b63c2390e69231
## Changes in formats WMTSCapabilities and SOSCapabilities
The structure of the object returned by `Format.WMTSCapabilities:read` and `Format.SOSCapabilities:read` has slightly changed.
For `WMTSCapabilities` the GET href used to be made available at `operationsMetadata.GetCapabilities.dcp.http.get`, the latter is now an array of objects with two properties: `url` and `constrains`. People using `operationsMetadata.GetCapabilities.dcp.http.get` in their applications should certainly use `operationsMetadata.GetCapabilities.dcp.http.get[0].url`.
Likewise for `SOSCapabilities`.
Looking at the tests is a good way to understand what the requires changes are. See [SOSCapabilities/v1_0_0.html](https://github.com/openlayers/openlayers/blob/master/tests/Format/SOSCapabilities/v1_0_0.html) and [WMTSCapabilities/v1_0_0.html](https://github.com/openlayers/openlayers/blob/master/tests/Format/WMTSCapabilities/v1_0_0.html).
* Trac ticket: http://trac.osgeo.org/openlayers/ticket/3568
* GitHub issue: https://github.com/openlayers/openlayers/pull/40
## Rico deprecation
We are deprecating the Rico classes/objects in OpenLayers. This has the following implications:
`Popup.AnchoredBubble` is deprecated. Its constructor now displays a deprecation message on the console. If you want popups with rounded corners either use `Popup.FramedClould`, or use `Popup.Anchored` and round corners using the [border-radius](https://developer.mozilla.org/en/CSS/border-radius) CSS property.
The `roundedCorner` option of `Control.LayerSwitcher` is deprecated, and it now defaults to `false`. Setting it to true results in deprecation messages being output on the console. If you still want to set `roundedCorner` to `true` (you should not!) you need to make sure that the Rico/Corner.js and Rico/Color.js scripts are loaded in the page. This can be ensured by adding Rico/Corner.js in the build profile. The controls.html example demonstrates how to use `border-radius` to round corners of a layer switcher:
olControlLayerSwitcher .layersDiv {
border-radius: 10px 0 0 10px;
}
See more detail in the Rico deprecation [pull request](https://github.com/openlayers/openlayers/pull/99).
In future releases we intend to move the Rico and `AnchoredBubble` code into deprecated.js. You really should consider stop using Rico-based functionalities in your applications.
## Changes in Geometry
The base `OpenLayers.Geometry` class no longer depends on `OpenLayers.Format.WKT` or `OpenLayers.Feature.Vector`. If you want to make use of the `OpenLayers.Geometry.fromWKT` method, you must explicitly include the OpenLayers/Format/WKT.js file in your build.
Without the WKT format included (by default), the `OpenLayers.Geometry::toString` method now returns "[object Object]." Previously, it returned the Well-Known Text representation of the geometry. To maintain the previous behavior, include the OpenLayers/Format/WKT.js file in your build.
## Deprecated Components
A number of constructors have been marked as deprecated for multiple releases in the 2.x series. For the 2.12 release this deprecated functionality has been moved to a separate deprecated.js file. If you use any of the constructors or methods below, you will have to explicitly include the deprecated.js file in your build (or add it in a separate `<script>` tag after OpenLayers.js).
* OpenLayers.Class.isPrototype
* OpenLayers.Class.create
* OpenLayers.Class.inherit
* OpenLayers.Util.clearArray
* OpenLayers.Util.setOpacity
* OpenLayers.Util.safeStopPropagation
* OpenLayers.Util.getArgs
* OpenLayers.nullHandler
* OpenLayers.loadURL
* OpenLayers.parseXMLString
* OpenLayers.Ajax.* (all methods)
* OpenLayers.Element.hide
* OpenLayers.Element.show
* OpenLayers.Element.getDimensions
* OpenLayers.Tile.prototype.getBoundsFromBaseLayer
* OpenLayers.Control.MouseDefaults
* OpenLayers.Control.MouseToolbar
* OpenLayers.Layer.Grid.prototype.getGridBounds
* OpenLayers.Format.XML.prototype.concatChildValues
* OpenLayers.Layer.WMS.Post
* OpenLayers.Layer.WMS.Untiled
* OpenLayers.Layer.MapServer.Untiled
* OpenLayers.Tile.WFS
* OpenLayers.Feature.WFS
* OpenLayers.Layer.WFS
* OpenLayers.Layer.MultiMap
* OpenLayers.Layer.VirtualEarth
* OpenLayers.Protocol.SQL
* OpenLayers.Protocol.SQL.Gears
* OpenLayers.Layer.Yahoo
* OpenLayers.Layer.GML
In addition, OpenLayers no longer modifies any native prototypes or objects by default. If you rely on any of the following, you'll need to include deprecated.js explicitly to get the same behavior.
* String.prototype.startsWith
* String.prototype.contains
* String.prototype.trim
* String.prototype.camelize
* Function.prototype.bind
* Function.prototype.bindAsEventListener
* Event.stop