Skip to content

Commit 6096981

Browse files
committed
ignore layer without geometries listening certain events in Map's GeometryEvents
1 parent 34cf41d commit 6096981

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

src/layer/OverlayLayer.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,27 @@ class OverlayLayer extends Layer {
5252
}
5353
}
5454

55+
isGeometryListening(types) {
56+
if (!this._geoList) {
57+
return false;
58+
}
59+
if (!Array.isArray(types)) {
60+
types = [types];
61+
}
62+
for (let i = 0, l = this._geoList.length; i < l; i++) {
63+
const geometry = this._geoList[i];
64+
if (!geometry) {
65+
continue;
66+
}
67+
for (let j = 0; j < types.length; j++) {
68+
if (geometry.listens(types[j])) {
69+
return true;
70+
}
71+
}
72+
}
73+
return false;
74+
}
75+
5576
/**
5677
* Get a geometry by its id
5778
* @param {String|Number} id - id of the geometry

src/map/Map.Topo.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,11 @@ Map.include(/** @lends Map.prototype */ {
106106
opts.tolerance = opts.tolerance || 0;
107107
opts.tolerance += layer.options.geometryEventTolerance;
108108
}
109+
if (layer.isGeometryListening && isMapGeometryEvent && opts.eventTypes.indexOf('mousemove') >= 0) {
110+
if (!layer.isGeometryListening(opts.eventTypes)) {
111+
return [];
112+
}
113+
}
109114
if (layer.identifyAtPoint) {
110115
result = layer.identifyAtPoint(containerPoint, opts);
111116
} else if (coordinate && layer.identify) {

0 commit comments

Comments
 (0)