Avoid source check in map renderer
By returning true or false from the layer renderer's getFeatureInfoForPixel method, we know whether the source supports GetFeatureInfo or not.
This commit is contained in:
@@ -48,17 +48,21 @@ goog.inherits(ol.renderer.Layer, goog.Disposable);
|
||||
* successful queries. The passed arguments are the resulting feature
|
||||
* information and the layer.
|
||||
* @param {function()=} opt_error Callback for unsuccessful queries.
|
||||
* @return {boolean} Whether getFeatureInfoForPixel was called on the source.
|
||||
*/
|
||||
ol.renderer.Layer.prototype.getFeatureInfoForPixel =
|
||||
function(pixel, success, opt_error) {
|
||||
var layer = this.getLayer();
|
||||
var source = layer.getSource();
|
||||
var haveGetFeatureInfo = false;
|
||||
if (goog.isFunction(source.getFeatureInfoForPixel)) {
|
||||
var callback = function(layerFeatureInfo) {
|
||||
success(layerFeatureInfo, layer);
|
||||
};
|
||||
source.getFeatureInfoForPixel(pixel, this.getMap(), callback, opt_error);
|
||||
haveGetFeatureInfo = true;
|
||||
}
|
||||
return haveGetFeatureInfo;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -122,14 +122,11 @@ ol.renderer.Map.prototype.getFeatureInfoForPixel =
|
||||
}
|
||||
};
|
||||
|
||||
var layer, layerRenderer, source;
|
||||
var layerRenderer;
|
||||
for (var i = 0; i < numLayers; ++i) {
|
||||
layer = layers[i];
|
||||
source = layer.getSource();
|
||||
if (goog.isFunction(source.getFeatureInfoForPixel)) {
|
||||
layerRenderer = this.getLayerRenderer(layers[i]);
|
||||
if (layerRenderer.getFeatureInfoForPixel(pixel, callback, opt_error)) {
|
||||
++callbackCount;
|
||||
layerRenderer = this.getLayerRenderer(layer);
|
||||
layerRenderer.getFeatureInfoForPixel(pixel, callback, opt_error);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user