Hit detection refactoring
Get the frame state from the map instead of storing values in the layer renderers.
This commit is contained in:
@@ -32,12 +32,6 @@ ol.renderer.canvas.VectorLayer = function(mapRenderer, vectorLayer) {
|
||||
*/
|
||||
this.dirty_ = false;
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type {ol.Extent}
|
||||
*/
|
||||
this.frameStateExtent_ = ol.extent.createEmpty();
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type {number}
|
||||
@@ -50,12 +44,6 @@ ol.renderer.canvas.VectorLayer = function(mapRenderer, vectorLayer) {
|
||||
*/
|
||||
this.renderedResolution_ = NaN;
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type {number}
|
||||
*/
|
||||
this.renderedRotation_ = NaN;
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type {ol.Extent}
|
||||
@@ -101,20 +89,18 @@ ol.renderer.canvas.VectorLayer.prototype.composeFrame =
|
||||
* @inheritDoc
|
||||
*/
|
||||
ol.renderer.canvas.VectorLayer.prototype.forEachFeatureAtPixel =
|
||||
function(pixel, callback, opt_obj) {
|
||||
function(coordinate, frameState, callback, opt_obj) {
|
||||
if (goog.isNull(this.replayGroup_)) {
|
||||
return undefined;
|
||||
} else {
|
||||
goog.asserts.assert(!ol.extent.isEmpty(this.frameStateExtent_));
|
||||
goog.asserts.assert(!isNaN(this.renderedResolution_));
|
||||
goog.asserts.assert(!isNaN(this.renderedRotation_));
|
||||
var coordinate = this.getMap().getCoordinateFromPixel(pixel);
|
||||
var extent = frameState.extent;
|
||||
var resolution = frameState.view2DState.resolution;
|
||||
var rotation = frameState.view2DState.rotation;
|
||||
var layer = this.getLayer();
|
||||
var renderGeometryFunction = this.getRenderGeometryFunction_();
|
||||
goog.asserts.assert(goog.isFunction(renderGeometryFunction));
|
||||
return this.replayGroup_.forEachGeometryAtCoordinate(this.frameStateExtent_,
|
||||
this.renderedResolution_, this.renderedRotation_, coordinate,
|
||||
renderGeometryFunction,
|
||||
return this.replayGroup_.forEachGeometryAtPixel(extent, resolution,
|
||||
rotation, coordinate, renderGeometryFunction,
|
||||
/**
|
||||
* @param {ol.geom.Geometry} geometry Geometry.
|
||||
* @param {Object} data Data.
|
||||
@@ -183,8 +169,6 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame =
|
||||
var frameStateResolution = frameState.view2DState.resolution;
|
||||
var pixelRatio = frameState.devicePixelRatio;
|
||||
|
||||
this.frameStateExtent_ = frameStateExtent;
|
||||
|
||||
if (!this.dirty_ &&
|
||||
this.renderedResolution_ == frameStateResolution &&
|
||||
this.renderedRevision_ == vectorSource.getRevision() &&
|
||||
@@ -225,7 +209,6 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame =
|
||||
|
||||
this.renderedResolution_ = frameStateResolution;
|
||||
this.renderedRevision_ = vectorSource.getRevision();
|
||||
this.renderedRotation_ = frameState.view2DState.rotation;
|
||||
if (!replayGroup.isEmpty()) {
|
||||
this.replayGroup_ = replayGroup;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user