Merge pull request #1274 from tschaub/callback-count
Issue calls to get feature/info for all layers.
This commit is contained in:
@@ -92,9 +92,7 @@ var vector = new ol.layer.Vector({
|
|||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
var select = new ol.interaction.Select({
|
var select = new ol.interaction.Select();
|
||||||
layers: [vector]
|
|
||||||
});
|
|
||||||
|
|
||||||
var modify = new ol.interaction.Modify();
|
var modify = new ol.interaction.Modify();
|
||||||
|
|
||||||
|
|||||||
@@ -47,9 +47,7 @@ var vector = new ol.layer.Vector({
|
|||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
var select = new ol.interaction.Select({
|
var select = new ol.interaction.Select();
|
||||||
layers: [vector]
|
|
||||||
});
|
|
||||||
|
|
||||||
var map = new ol.Map({
|
var map = new ol.Map({
|
||||||
interactions: ol.interaction.defaults().extend([select]),
|
interactions: ol.interaction.defaults().extend([select]),
|
||||||
|
|||||||
@@ -113,10 +113,11 @@ ol.renderer.Map.prototype.getFeatureInfoForPixel =
|
|||||||
function(pixel, layers, success, opt_error) {
|
function(pixel, layers, success, opt_error) {
|
||||||
var numLayers = layers.length;
|
var numLayers = layers.length;
|
||||||
var featureInfo = new Array(numLayers);
|
var featureInfo = new Array(numLayers);
|
||||||
|
var callbackCount = 0;
|
||||||
var callback = function(layerFeatureInfo, layer) {
|
var callback = function(layerFeatureInfo, layer) {
|
||||||
featureInfo[goog.array.indexOf(layers, layer)] = layerFeatureInfo;
|
featureInfo[goog.array.indexOf(layers, layer)] = layerFeatureInfo;
|
||||||
--numLayers;
|
--callbackCount;
|
||||||
if (!numLayers) {
|
if (callbackCount <= 0) {
|
||||||
success(featureInfo);
|
success(featureInfo);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -126,9 +127,8 @@ ol.renderer.Map.prototype.getFeatureInfoForPixel =
|
|||||||
layer = layers[i];
|
layer = layers[i];
|
||||||
layerRenderer = this.getLayerRenderer(layer);
|
layerRenderer = this.getLayerRenderer(layer);
|
||||||
if (goog.isFunction(layerRenderer.getFeatureInfoForPixel)) {
|
if (goog.isFunction(layerRenderer.getFeatureInfoForPixel)) {
|
||||||
|
++callbackCount;
|
||||||
layerRenderer.getFeatureInfoForPixel(pixel, callback, opt_error);
|
layerRenderer.getFeatureInfoForPixel(pixel, callback, opt_error);
|
||||||
} else {
|
|
||||||
--numLayers;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -149,10 +149,11 @@ ol.renderer.Map.prototype.getFeaturesForPixel =
|
|||||||
function(pixel, layers, success, opt_error) {
|
function(pixel, layers, success, opt_error) {
|
||||||
var numLayers = layers.length;
|
var numLayers = layers.length;
|
||||||
var features = new Array(numLayers);
|
var features = new Array(numLayers);
|
||||||
|
var callbackCount = 0;
|
||||||
var callback = function(layerFeatures, layer) {
|
var callback = function(layerFeatures, layer) {
|
||||||
features[goog.array.indexOf(layers, layer)] = layerFeatures;
|
features[goog.array.indexOf(layers, layer)] = layerFeatures;
|
||||||
--numLayers;
|
--callbackCount;
|
||||||
if (!numLayers) {
|
if (callbackCount <= 0) {
|
||||||
success(features);
|
success(features);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -162,9 +163,8 @@ ol.renderer.Map.prototype.getFeaturesForPixel =
|
|||||||
layer = layers[i];
|
layer = layers[i];
|
||||||
layerRenderer = this.getLayerRenderer(layer);
|
layerRenderer = this.getLayerRenderer(layer);
|
||||||
if (goog.isFunction(layerRenderer.getFeaturesForPixel)) {
|
if (goog.isFunction(layerRenderer.getFeaturesForPixel)) {
|
||||||
|
++callbackCount;
|
||||||
layerRenderer.getFeaturesForPixel(pixel, callback, opt_error);
|
layerRenderer.getFeaturesForPixel(pixel, callback, opt_error);
|
||||||
} else {
|
|
||||||
--numLayers;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user