Add ol.renderer.canvas.VectorLayer#forEachFeatureAtPixel

This commit is contained in:
Éric Lemoine
2013-12-02 12:56:57 +01:00
parent e9843ced57
commit 65c922f580

View File

@@ -81,6 +81,32 @@ ol.renderer.canvas.VectorLayer.prototype.composeFrame =
};
/**
* @inheritDoc
*/
ol.renderer.canvas.VectorLayer.prototype.forEachFeatureAtPixel =
function(pixel, callback) {
if (!goog.isNull(this.replayGroup_)) {
goog.asserts.assert(!ol.extent.isEmpty(this.renderedExtent_));
goog.asserts.assert(!isNaN(this.renderedResolution_));
var coordinate = this.getMap().getCoordinateFromPixel(pixel);
var renderGeometryFunction = this.getRenderGeometryFunction_();
goog.asserts.assert(goog.isFunction(renderGeometryFunction));
this.replayGroup_.forEachGeometryAtCoordinate(this.renderedExtent_,
this.renderedResolution_, coordinate, renderGeometryFunction,
/**
* @param {ol.geom.Geometry} geometry Geometry.
* @param {Object} data Data.
*/
function(geometry, data) {
var feature = /** @type {ol.Feature} */ (data);
goog.asserts.assert(goog.isDef(feature));
callback(feature);
});
}
};
/**
* @private
* @return {function(ol.geom.Geometry): boolean|undefined} Render geometry
@@ -199,12 +225,12 @@ ol.renderer.canvas.VectorLayer.prototype.renderFeature =
this.handleImageStyleChange_, false, this);
imageStyle.load();
} else if (imageStyle.imageState == ol.style.ImageState.LOADED) {
ol.renderer.vector.renderFeature(replayGroup, feature, style);
ol.renderer.vector.renderFeature(replayGroup, feature, style, feature);
}
goog.asserts.assert(imageStyle.imageState != ol.style.ImageState.IDLE);
loading = imageStyle.imageState == ol.style.ImageState.LOADING;
} else {
ol.renderer.vector.renderFeature(replayGroup, feature, style);
ol.renderer.vector.renderFeature(replayGroup, feature, style, feature);
}
}
return loading;