@@ -2104,30 +2104,48 @@ export class MainView extends React.Component<IProps, IStates> {
21042104      case  'VectorTileLayer' : { 
21052105        const  geometries : Geometry [ ]  =  [ ] ; 
21062106        const  features : any [ ]  =  [ ] ; 
2107+         let  foundAny  =  false ; 
21072108
21082109        this . _Map . forEachFeatureAtPixel ( e . pixel ,  ( feature : FeatureLike )  =>  { 
2110+           foundAny  =  true ; 
2111+ 
21092112          let  geom : Geometry  |  undefined ; 
2113+           let  props  =  { } ; 
21102114
21112115          if  ( feature  instanceof  RenderFeature )  { 
21122116            geom  =  toGeometry ( feature ) ; 
21132117          }  else  if  ( 'getGeometry'  in  feature )  { 
21142118            geom  =  feature . getGeometry ( ) ; 
21152119          } 
21162120
2117-           const  props  =  feature . getProperties ( ) ; 
2121+           const  rawProps  =  feature . getProperties ( ) ; 
2122+           const  fid  =  feature . getId ?.( )  ??  rawProps ?. fid ; 
2123+ 
2124+           if  ( rawProps  &&  Object . keys ( rawProps ) . length  >  1 )  { 
2125+             const  {  geometry,  ...clean  }  =  rawProps ; 
2126+             props  =  clean ; 
2127+             if  ( fid  !==  null )  { 
2128+               // TODO Clean the cache under some condition? 
2129+               this . _featurePropertyCache . set ( fid ,  props ) ; 
2130+             } 
2131+           }  else  if  ( fid  !==  null  &&  this . _featurePropertyCache . has ( fid ) )  { 
2132+             props  =  this . _featurePropertyCache . get ( fid ) ; 
2133+           } 
21182134
21192135          if  ( geom )  { 
21202136            geometries . push ( geom ) ; 
21212137          } 
2122-           features . push ( { 
2123-             ... props , 
2124-           } ) ; 
2138+           if   ( props   &&   Object . keys ( props ) . length   >   0 )   { 
2139+             features . push ( props ) ; 
2140+           } 
21252141
21262142          return  true ; 
21272143        } ) ; 
21282144
21292145        if  ( features . length  >  0 )  { 
21302146          this . _model . syncIdentifiedFeatures ( features ,  this . _mainViewModel . id ) ; 
2147+         }  else  if  ( ! foundAny )  { 
2148+           this . _model . syncIdentifiedFeatures ( [ ] ,  this . _mainViewModel . id ) ; 
21312149        } 
21322150
21332151        if  ( geometries . length  >  0 )  { 
@@ -2335,4 +2353,5 @@ export class MainView extends React.Component<IProps, IStates> {
23352353  private  _state ?: IStateDB ; 
23362354  private  _formSchemaRegistry ?: IJGISFormSchemaRegistry ; 
23372355  private  _annotationModel ?: IAnnotationModel ; 
2356+   private  _featurePropertyCache : Map < string  |  number ,  any >  =  new  Map ( ) ; 
23382357} 
0 commit comments