@@ -8,7 +8,7 @@ import * as vec3 from '../../../core/util/vec3';
88import Canvas from '../../../core/Canvas' ;
99import type { Painter , CollectionPainter } from '../../geometry' ;
1010import { Point } from '../../../geo' ;
11- import { Geometries } from '../../../geometry' ;
11+ import { Geometries , Marker } from '../../../geometry' ;
1212import type { WithUndef } from '../../../types/typings' ;
1313
1414const TEMP_EXTENT = new PointExtent ( ) ;
@@ -70,19 +70,9 @@ class VectorLayerRenderer extends OverlayLayerCanvasRenderer {
7070 setToRedraw ( ) : this {
7171 super . setToRedraw ( ) ;
7272 this . _resetProgressiveRender ( ) ;
73- this . _resetGeosCollisionState ( ) ;
7473 return this ;
7574 }
7675
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- }
8676
8777 //@internal
8878 _geoIsCollision ( geo : GeoType , collisionIndex : any ) {
@@ -378,20 +368,32 @@ class VectorLayerRenderer extends OverlayLayerCanvasRenderer {
378368
379369 //@internal
380370 _collidesGeos ( ) {
371+ const geos = this . _geosToDraw ;
381372 const collision = this . layer . options [ 'collision' ] ;
382373 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+ }
383381 return this ;
384382 }
385383 const collisionScope = this . layer . options [ 'collisionScope' ] ;
386384 const collisionIndex = this . layer . getCollisionIndex ( ) ;
387385 if ( collisionScope === 'layer' ) {
388386 collisionIndex . clear ( ) ;
389387 }
390- const geos = this . _geosToDraw ;
391388 this . _geosToDraw = [ ] ;
392389 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+ }
395397 }
396398 this . _geosToDraw . push ( geos [ i ] ) ;
397399 }
0 commit comments