@@ -794,16 +794,35 @@ class MapCanvasRenderer extends MapRenderer {
794
794
}
795
795
796
796
_setCheckSizeInterval ( interval ) {
797
- clearInterval ( this . _resizeInterval ) ;
798
- this . _checkSizeInterval = interval ;
799
- this . _resizeInterval = setInterval ( ( ) => {
800
- if ( ! this . map || this . map . isRemoved ( ) ) {
801
- //is deleted
802
- clearInterval ( this . _resizeInterval ) ;
803
- } else {
804
- this . _checkSize ( ) ;
797
+ // ResizeObserver priority of use
798
+ // https://developer.mozilla.org/zh-CN/docs/Web/API/ResizeObserver
799
+ if ( typeof window !== 'undefined' && window . ResizeObserver ) {
800
+ if ( this . _resizeObserver ) {
801
+ this . _resizeObserver . disconnect ( ) ;
802
+ }
803
+ if ( this . map ) {
804
+ // eslint-disable-next-line no-unused-vars
805
+ this . _resizeObserver = new ResizeObserver ( ( entries ) => {
806
+ if ( ! this . map || this . map . isRemoved ( ) ) {
807
+ this . _resizeObserver . disconnect ( ) ;
808
+ } else if ( entries . length ) {
809
+ this . _checkSize ( entries [ 0 ] . contentRect ) ;
810
+ }
811
+ } ) ;
812
+ this . _resizeObserver . observe ( this . map . _containerDOM ) ;
805
813
}
806
- } , this . _checkSizeInterval ) ;
814
+ } else {
815
+ clearInterval ( this . _resizeInterval ) ;
816
+ this . _checkSizeInterval = interval ;
817
+ this . _resizeInterval = setInterval ( ( ) => {
818
+ if ( ! this . map || this . map . isRemoved ( ) ) {
819
+ //is deleted
820
+ clearInterval ( this . _resizeInterval ) ;
821
+ } else {
822
+ this . _checkSize ( ) ;
823
+ }
824
+ } , this . _checkSizeInterval ) ;
825
+ }
807
826
}
808
827
809
828
_registerEvents ( ) {
0 commit comments