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:
ahocevar
2013-11-20 16:05:00 +01:00
parent 0238fa54de
commit b8a9aeb14e
2 changed files with 7 additions and 6 deletions

View File

@@ -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;
};

View File

@@ -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);
}
}
};