File tree Expand file tree Collapse file tree 1 file changed +13
-4
lines changed Expand file tree Collapse file tree 1 file changed +13
-4
lines changed Original file line number Diff line number Diff line change @@ -786,14 +786,23 @@ export default class Mapbox {
786786 }
787787 } ;
788788
789+ _uniqueLayersCount ( features : MapboxGeoJSONFeature [ ] | null ) {
790+ if ( ! features ) {
791+ return 0 ;
792+ }
793+ return features . filter (
794+ ( feature , index ) => features . findIndex ( f => f . layer . id === feature . layer . id ) === index
795+ ) . length ;
796+ }
797+
789798 _updateHover ( e : MapMouseEvent ) {
790799 const { props} = this ;
791800 const shouldTrackHoveredFeatures =
792801 props . interactiveLayerIds && ( props . onMouseMove || props . onMouseEnter || props . onMouseLeave ) ;
793802
794803 if ( shouldTrackHoveredFeatures ) {
795804 const eventType = e . type ;
796- const wasHovering = this . _hoveredFeatures ?. length > 0 ;
805+ const hoveredLayersCount = this . _uniqueLayersCount ( this . _hoveredFeatures ) ;
797806 let features ;
798807 if ( eventType === 'mousemove' ) {
799808 try {
@@ -806,14 +815,14 @@ export default class Mapbox {
806815 } else {
807816 features = [ ] ;
808817 }
809- const isHovering = features . length > 0 ;
818+ const hoveringLayersCount = this . _uniqueLayersCount ( features ) ;
810819
811- if ( ! isHovering && wasHovering ) {
820+ if ( hoveringLayersCount < hoveredLayersCount ) {
812821 e . type = 'mouseleave' ;
813822 this . _onPointerEvent ( e ) ;
814823 }
815824 this . _hoveredFeatures = features ;
816- if ( isHovering && ! wasHovering ) {
825+ if ( hoveringLayersCount > hoveredLayersCount ) {
817826 e . type = 'mouseenter' ;
818827 this . _onPointerEvent ( e ) ;
819828 }
You can’t perform that action at this time.
0 commit comments