File tree Expand file tree Collapse file tree 4 files changed +31
-4
lines changed Expand file tree Collapse file tree 4 files changed +31
-4
lines changed Original file line number Diff line number Diff line change @@ -60,9 +60,9 @@ export class CustomOverlayLayer {
6060 // 移除 layer 事件
6161 off ( ) { }
6262
63- // 查询足查询参数的可见要素的 GeoJSON 要素对象数组
63+ // 查询足查询参数的可见要素的 GeoJSON 要素对象数组,如果图层不可见则返回空
6464 queryRenderedFeatures ( ) { }
6565
66- // 查询满足查询参数的指定矢量切片或 GeoJSON 源中的要素
66+ // 查询满足查询参数的指定矢量切片或 GeoJSON 源中的要素,如果图层不可见则返回空
6767 querySourceFeatures ( ) { }
6868}
Original file line number Diff line number Diff line change @@ -292,7 +292,7 @@ export class L7Layer extends CustomOverlayLayer {
292292 }
293293
294294 queryRenderedFeatures ( geometry , options , cb ) {
295- if ( ! this . l7layer ) {
295+ if ( ! this . l7layer || ! this . l7layer . rawConfig . visible ) {
296296 return cb ( [ ] ) ;
297297 }
298298 let box = geometry ;
@@ -321,7 +321,7 @@ export class L7Layer extends CustomOverlayLayer {
321321 }
322322
323323 querySourceFeatures ( ) {
324- if ( ! this . l7layer ) {
324+ if ( ! this . l7layer || ! this . l7layer . rawConfig . visible ) {
325325 return [ ] ;
326326 }
327327 const layerSource = this . l7layer . layerSource ;
Original file line number Diff line number Diff line change @@ -507,6 +507,28 @@ describe('mapboxgl L7Layer', () => {
507507 const nextLayerFilter = layer . getFilter ( ) ;
508508 expect ( nextLayerFilter . field ) . toEqual ( [ ] ) ;
509509 expect ( nextLayerFilter . values ( '1' ) ) . toBeTruthy ( ) ;
510+
511+ let queryFeatures ;
512+ const queryResult = {
513+ cb : function ( data ) {
514+ queryFeatures = data ;
515+ }
516+ } ;
517+ spyOn ( queryResult , 'cb' ) . and . callThrough ( ) ;
518+ layer . queryRenderedFeatures ( [ 0 , 0 ] , { } , queryResult . cb ) ;
519+ expect ( queryResult . cb . calls . count ( ) ) . toBe ( 1 ) ;
520+ expect ( queryFeatures ) . not . toBeUndefined ( ) ;
521+ expect ( queryFeatures . length ) . toBeGreaterThan ( 0 ) ;
522+ expect ( layer . querySourceFeatures ( ) . length ) . toBeGreaterThan ( 0 ) ;
523+ expect ( layer . getLayer ( ) . layout . visibility ) . toBe ( 'visible' ) ;
524+ layer . setLayoutProperty ( 'visibility' , 'none' ) ;
525+ expect ( layer . getLayer ( ) . layout . visibility ) . toBe ( 'none' ) ;
526+ expect ( layer . querySourceFeatures ( ) . length ) . toBe ( 0 ) ;
527+ layer . queryRenderedFeatures ( [ 0 , 0 ] , { } , queryResult . cb ) ;
528+ expect ( queryResult . cb . calls . count ( ) ) . toBe ( 2 ) ;
529+ expect ( queryFeatures . length ) . toBe ( 0 ) ;
530+ layer . setLayoutProperty ( 'visibility' , 'visible' ) ;
531+
510532 spyOn ( l7Layer , 'on' ) ;
511533 spyOn ( l7Layer , 'once' ) ;
512534 spyOn ( l7Layer , 'off' ) ;
Original file line number Diff line number Diff line change @@ -57,6 +57,9 @@ class Layer {
5757 dataArray : [ ]
5858 }
5959 } ;
60+ if ( this . rawConfig . visible === void 0 ) {
61+ this . rawConfig . visible = true ;
62+ }
6063 }
6164 source ( data , options = { } ) {
6265 const parser = options . parser || { type : "geojson" } ;
@@ -124,9 +127,11 @@ class Layer {
124127 return this ;
125128 }
126129 show ( ) {
130+ this . rawConfig . visible = true ;
127131 return this ;
128132 }
129133 hide ( ) {
134+ this . rawConfig . visible = false ;
130135 return this ;
131136 }
132137 getSource ( ) {
You can’t perform that action at this time.
0 commit comments