Pass geometry to forEachFeatureAtPixel callback
This commit is contained in:
@@ -105,7 +105,7 @@ class LayerRenderer extends Observable {
|
||||
* @param {import("../coordinate.js").Coordinate} coordinate Coordinate.
|
||||
* @param {import("../PluggableMap.js").FrameState} frameState Frame state.
|
||||
* @param {number} hitTolerance Hit tolerance in pixels.
|
||||
* @param {function(import("../Feature.js").FeatureLike, import("../layer/Layer.js").default): T} callback Feature callback.
|
||||
* @param {import("./vector.js").FeatureCallback<T>} callback Feature callback.
|
||||
* @return {T|void} Callback result.
|
||||
* @template T
|
||||
*/
|
||||
|
||||
@@ -64,8 +64,7 @@ class MapRenderer extends Disposable {
|
||||
* @param {import("../PluggableMap.js").FrameState} frameState FrameState.
|
||||
* @param {number} hitTolerance Hit tolerance in pixels.
|
||||
* @param {boolean} checkWrapped Check for wrapped geometries.
|
||||
* @param {function(this: S, import("../Feature.js").FeatureLike,
|
||||
* import("../layer/Layer.js").default): T} callback Feature callback.
|
||||
* @param {import("./vector.js").FeatureCallback<T>} callback Feature callback.
|
||||
* @param {S} thisArg Value to use as `this` when executing `callback`.
|
||||
* @param {function(this: U, import("../layer/Layer.js").default): boolean} layerFilter Layer filter
|
||||
* function, only layers which are visible and for which this function
|
||||
@@ -92,10 +91,11 @@ class MapRenderer extends Disposable {
|
||||
* @param {boolean} managed Managed layer.
|
||||
* @param {import("../Feature.js").FeatureLike} feature Feature.
|
||||
* @param {import("../layer/Layer.js").default} layer Layer.
|
||||
* @param {import("../geom/Geometry.js").default} geometry Geometry.
|
||||
* @return {?} Callback result.
|
||||
*/
|
||||
function forEachFeatureAtCoordinate(managed, feature, layer) {
|
||||
return callback.call(thisArg, feature, managed ? layer : null);
|
||||
function forEachFeatureAtCoordinate(managed, feature, layer, geometry) {
|
||||
return callback.call(thisArg, feature, managed ? layer : null, geometry);
|
||||
}
|
||||
|
||||
const projection = viewState.projection;
|
||||
|
||||
@@ -194,7 +194,7 @@ class CanvasVectorImageLayerRenderer extends CanvasImageLayerRenderer {
|
||||
* @param {import("../../coordinate.js").Coordinate} coordinate Coordinate.
|
||||
* @param {import("../../PluggableMap.js").FrameState} frameState Frame state.
|
||||
* @param {number} hitTolerance Hit tolerance in pixels.
|
||||
* @param {function(import("../../Feature.js").FeatureLike, import("../../layer/Layer.js").default): T} callback Feature callback.
|
||||
* @param {import("../vector.js").FeatureCallback<T>} callback Feature callback.
|
||||
* @return {T|void} Callback result.
|
||||
* @template T
|
||||
*/
|
||||
|
||||
@@ -406,7 +406,7 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer {
|
||||
* @param {import("../../coordinate.js").Coordinate} coordinate Coordinate.
|
||||
* @param {import("../../PluggableMap.js").FrameState} frameState Frame state.
|
||||
* @param {number} hitTolerance Hit tolerance in pixels.
|
||||
* @param {function(import("../../Feature.js").FeatureLike, import("../../layer/Layer.js").default): T} callback Feature callback.
|
||||
* @param {import("../vector.js").FeatureCallback<T>} callback Feature callback.
|
||||
* @return {T|void} Callback result.
|
||||
* @template T
|
||||
*/
|
||||
@@ -423,13 +423,14 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer {
|
||||
|
||||
/**
|
||||
* @param {import("../../Feature.js").FeatureLike} feature Feature.
|
||||
* @param {import("../../geom/SimpleGeometry.js").default} geometry Geometry.
|
||||
* @return {?} Callback result.
|
||||
*/
|
||||
const featureCallback = function (feature) {
|
||||
const featureCallback = function (feature, geometry) {
|
||||
const key = getUid(feature);
|
||||
if (!(key in features)) {
|
||||
features[key] = true;
|
||||
return callback(feature, layer);
|
||||
return callback(feature, layer, geometry);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -380,7 +380,7 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer {
|
||||
* @param {import("../../coordinate.js").Coordinate} coordinate Coordinate.
|
||||
* @param {import("../../PluggableMap.js").FrameState} frameState Frame state.
|
||||
* @param {number} hitTolerance Hit tolerance in pixels.
|
||||
* @param {function(import("../../Feature.js").FeatureLike, import("../../layer/Layer.js").default): T} callback Feature callback.
|
||||
* @param {import("../vector.js").FeatureCallback<T>} callback Feature callback.
|
||||
* @return {T|void} Callback result.
|
||||
* @template T
|
||||
*/
|
||||
@@ -432,9 +432,10 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer {
|
||||
hitTolerance,
|
||||
/**
|
||||
* @param {import("../../Feature.js").FeatureLike} feature Feature.
|
||||
* @param {import("../../geom/SimpleGeometry.js").default} geometry Geometry.
|
||||
* @return {?} Callback result.
|
||||
*/
|
||||
function (feature) {
|
||||
function (feature, geometry) {
|
||||
if (tileContainsCoordinate) {
|
||||
let key = feature.getId();
|
||||
if (key === undefined) {
|
||||
@@ -442,7 +443,7 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer {
|
||||
}
|
||||
if (!(key in features)) {
|
||||
features[key] = true;
|
||||
return callback(feature, layer);
|
||||
return callback(feature, layer, geometry);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -6,6 +6,11 @@ import GeometryType from '../geom/GeometryType.js';
|
||||
import ImageState from '../ImageState.js';
|
||||
import {getUid} from '../util.js';
|
||||
|
||||
/**
|
||||
* @template T
|
||||
* @typedef {function(import("../Feature.js").FeatureLike, import("../layer/Layer.js").default, import("../geom/SimpleGeometry.js").default): T} FeatureCallback
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tolerance for geometry simplification in device pixels.
|
||||
* @type {number}
|
||||
|
||||
@@ -597,7 +597,7 @@ class WebGLPointsLayerRenderer extends WebGLLayerRenderer {
|
||||
* @param {import("../../coordinate.js").Coordinate} coordinate Coordinate.
|
||||
* @param {import("../../PluggableMap.js").FrameState} frameState Frame state.
|
||||
* @param {number} hitTolerance Hit tolerance in pixels.
|
||||
* @param {function(import("../../Feature.js").FeatureLike, import("../../layer/Layer.js").default): T} callback Feature callback.
|
||||
* @param {import("../vector.js").FeatureCallback<T>} callback Feature callback.
|
||||
* @return {T|void} Callback result.
|
||||
* @template T
|
||||
*/
|
||||
@@ -621,7 +621,7 @@ class WebGLPointsLayerRenderer extends WebGLLayerRenderer {
|
||||
const source = this.getLayer().getSource();
|
||||
const feature = source.getFeatureByUid(uid);
|
||||
if (feature) {
|
||||
return callback(feature, this.getLayer());
|
||||
return callback(feature, this.getLayer(), null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user