With this change, getFeaturesObjectForExtent may return null if
the source does not have data loaded for the provided extent.
A callback can be passed to getFeaturesObjectForExtent to get
notified when the requested data is available.
This adds url, data and parser options to the source, and makes
EPSG:4326 the default projection. It also adds a prepareFeatures
method, which is used to load/parse data once the target
projection is known.
The zoom slider control's initSlider_ function requires that the control's element is inserted in the document. So if initSlider_ is called before the map have a target then the slider isn't correctly initialized. This commit fixes that by defering the slider initialization until the first handleMapPostrender call.
This work is based on the ol.expr package by @tschaub.
It adds a few named expression functions to that package:
* INTERSECTS, CONTAINS, DWITHIN, WITHIN (no client-side implementation as yet)
* LIKE (like comparison with wildcard, singleChar and escapeChar)
* IEQ (case-insensitive equality)
* INEQ (case-insensitive non-equality)
It also adds a few extra parameters to the existing EXTENT function to be able
to deserialize and serialize all info (i.e. projection and property name).
Some changes were needed for the GML parser as well:
* createGeometry function needed to be public
* when parsing Box (GML2) and Envelope (GML3) also parse the srsName
* fix up writing for Box and Envelope now that bounds is an array
Also added createDocumentFragment function to the XML parser. Implementation
is similar to OpenLayers 2.
Some addtional notes on the implementation:
* PropertyIsBetween was implemented as an ol.expr.Logical with operator
ol.expr.LogicalOp.AND and two ol.expr.Comparison instances with operator
ol.expr.ComparisonOp.GTE and ol.expr.ComparisonOp.LTE
* In OGC Filter And and Or can contain more than 2 sub filters, so this
is translated into a hierarchy of ol.expr.Logical