@@ -8,7 +8,7 @@ import * as vec3 from '../../../core/util/vec3';
8
8
import Canvas from '../../../core/Canvas' ;
9
9
import type { Painter , CollectionPainter } from '../../geometry' ;
10
10
import { Point } from '../../../geo' ;
11
- import { Geometries } from '../../../geometry' ;
11
+ import { Geometries , Marker } from '../../../geometry' ;
12
12
import type { WithUndef } from '../../../types/typings' ;
13
13
14
14
const TEMP_EXTENT = new PointExtent ( ) ;
@@ -70,19 +70,9 @@ class VectorLayerRenderer extends OverlayLayerCanvasRenderer {
70
70
setToRedraw ( ) : this {
71
71
super . setToRedraw ( ) ;
72
72
this . _resetProgressiveRender ( ) ;
73
- this . _resetGeosCollisionState ( ) ;
74
73
return this ;
75
74
}
76
75
77
- _resetGeosCollisionState ( ) {
78
- const geos = this . layer . _geoList || [ ] ;
79
- for ( let i = 0 , len = geos . length ; i < len ; i ++ ) {
80
- const geo = geos [ i ] ;
81
- if ( geo . isPoint ) {
82
- geo . _collided = false ;
83
- }
84
- }
85
- }
86
76
87
77
//@internal
88
78
_geoIsCollision ( geo : GeoType , collisionIndex : any ) {
@@ -378,20 +368,32 @@ class VectorLayerRenderer extends OverlayLayerCanvasRenderer {
378
368
379
369
//@internal
380
370
_collidesGeos ( ) {
371
+ const geos = this . _geosToDraw ;
381
372
const collision = this . layer . options [ 'collision' ] ;
382
373
if ( ! collision ) {
374
+ //reset points _collided
375
+ for ( let i = 0 , len = geos . length ; i < len ; i ++ ) {
376
+ const geo = geos [ i ] ;
377
+ if ( geo . isPoint ) {
378
+ ( geo as Marker ) . _collided = false ;
379
+ }
380
+ }
383
381
return this ;
384
382
}
385
383
const collisionScope = this . layer . options [ 'collisionScope' ] ;
386
384
const collisionIndex = this . layer . getCollisionIndex ( ) ;
387
385
if ( collisionScope === 'layer' ) {
388
386
collisionIndex . clear ( ) ;
389
387
}
390
- const geos = this . _geosToDraw ;
391
388
this . _geosToDraw = [ ] ;
392
389
for ( let i = 0 , len = geos . length ; i < len ; i ++ ) {
393
- if ( this . _geoIsCollision ( geos [ i ] , collisionIndex ) ) {
394
- continue ;
390
+ const geo = geos [ i ] ;
391
+ if ( geo . isPoint ) {
392
+ ( geo as Marker ) . _collided = false ;
393
+ if ( this . _geoIsCollision ( geo , collisionIndex ) ) {
394
+ ( geo as Marker ) . _collided = true ;
395
+ continue ;
396
+ }
395
397
}
396
398
this . _geosToDraw . push ( geos [ i ] ) ;
397
399
}
0 commit comments