Allow registration of custom functions for expressions
This commit is contained in:
@@ -49,7 +49,7 @@ var style = new ol.style.Style({rules: [
|
|||||||
}),
|
}),
|
||||||
new ol.style.Text({
|
new ol.style.Text({
|
||||||
color: '#bada55',
|
color: '#bada55',
|
||||||
text: new ol.Expression('label'),
|
text: ol.expression.parse('label'),
|
||||||
fontFamily: 'Calibri,sans-serif',
|
fontFamily: 'Calibri,sans-serif',
|
||||||
fontSize: 14
|
fontSize: 14
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
goog.require('ol.Expression');
|
|
||||||
goog.require('ol.Map');
|
goog.require('ol.Map');
|
||||||
goog.require('ol.RendererHint');
|
goog.require('ol.RendererHint');
|
||||||
goog.require('ol.View2D');
|
goog.require('ol.View2D');
|
||||||
goog.require('ol.filter.Filter');
|
goog.require('ol.expression');
|
||||||
goog.require('ol.layer.TileLayer');
|
goog.require('ol.layer.TileLayer');
|
||||||
goog.require('ol.layer.Vector');
|
goog.require('ol.layer.Vector');
|
||||||
goog.require('ol.parser.GeoJSON');
|
goog.require('ol.parser.GeoJSON');
|
||||||
@@ -19,6 +18,11 @@ var raster = new ol.layer.TileLayer({
|
|||||||
source: new ol.source.MapQuestOpenAerial()
|
source: new ol.source.MapQuestOpenAerial()
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// TODO: discuss scale dependent rules
|
||||||
|
ol.expression.register('resolution', function() {
|
||||||
|
return map.getView().getView2D().getResolution();
|
||||||
|
});
|
||||||
|
|
||||||
var vector = new ol.layer.Vector({
|
var vector = new ol.layer.Vector({
|
||||||
source: new ol.source.Vector({
|
source: new ol.source.Vector({
|
||||||
projection: ol.proj.get('EPSG:4326')
|
projection: ol.proj.get('EPSG:4326')
|
||||||
@@ -32,13 +36,11 @@ var vector = new ol.layer.Vector({
|
|||||||
]
|
]
|
||||||
}),
|
}),
|
||||||
new ol.style.Rule({
|
new ol.style.Rule({
|
||||||
filter: new ol.filter.Filter(function() {
|
filter: 'resolution() < 5000',
|
||||||
return map.getView().getResolution() < 5000;
|
|
||||||
}),
|
|
||||||
symbolizers: [
|
symbolizers: [
|
||||||
new ol.style.Text({
|
new ol.style.Text({
|
||||||
color: '#bada55',
|
color: '#bada55',
|
||||||
text: new ol.Expression('name'),
|
text: ol.expression.parse('name'),
|
||||||
fontFamily: 'Calibri,sans-serif',
|
fontFamily: 'Calibri,sans-serif',
|
||||||
fontSize: 12
|
fontSize: 12
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1 +1,2 @@
|
|||||||
@exportSymbol ol.expression.parse
|
@exportSymbol ol.expression.parse
|
||||||
|
@exportSymbol ol.expression.register
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ ol.expression.evaluateFeature = function(expr, opt_feature) {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse an expression
|
* Parse an expression.
|
||||||
* @param {string} source The expression source (e.g. `'foo + 2'`).
|
* @param {string} source The expression source (e.g. `'foo + 2'`).
|
||||||
* @return {ol.expression.Expression} An expression instance that can be
|
* @return {ol.expression.Expression} An expression instance that can be
|
||||||
* evaluated within some scope to provide a value.
|
* evaluated within some scope to provide a value.
|
||||||
@@ -43,6 +43,18 @@ ol.expression.parse = function(source) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register a library function to be used in expressions.
|
||||||
|
* @param {string} name The function name (e.g. 'myFunc').
|
||||||
|
* @param {function(this:ol.Feature)} func The function to be called in an
|
||||||
|
* expression. This function will be called with a feature as the `this`
|
||||||
|
* argument when the expression is evaluated in the context of a features.
|
||||||
|
*/
|
||||||
|
ol.expression.register = function(name, func) {
|
||||||
|
ol.expression.lib[name] = func;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determines whether an expression is a call expression that calls one of the
|
* Determines whether an expression is a call expression that calls one of the
|
||||||
* `ol.expression.lib` functions.
|
* `ol.expression.lib` functions.
|
||||||
|
|||||||
Reference in New Issue
Block a user