ThinkGeo.com    |     Documentation    |     Premium Support

InMemoryFeatureLayer.QueryTools

Hi,


Is InMemoryFeatureLayer.QueryTools always null? I can't use (or even try) GetFeaturesIntersecting method because the QueryTools property is null.


What I need to do is to determine features in a rectangle that a user draw on the map. So I followed the pattern of SelectAtTrackShape sample. Instead of using ShapeFileFeatureLayer as in the sample, I need to use the InMemoryFeatureLayer which contains the features.


See the picture bleow.




 Kaori,


I have tested QueryTools of inmemoryFeaturelayer, it's not null, I attached my sample code, you can copy it to override TrackAndEditOverlay in our howDoI sample. i think you may write some inccorect for pointLayer.


Thanks,


James



001_TrackAndEditShapes.zip (2.67 KB)

Thanks James, 
  
 Hm, the pointLayer was working totally fine until I tried QueryTools. Here’s the sample code. Would you take a look at it? 
  
 dl.dropbox.com/u/11338429/ThinkGeoTest_QueryTools.zip 
  
 Kaori 


Hi again,


I noticed that after the FeatureSource.Open, the QueryTools become null. (See pictures below) What do I have to do to take this back...? 


To see all the code, please take a look at the source in the link in my previous post.


Picture 1: Before FeatureSource.Open()



Picture 2: After FeatureSource.Open()



 


 



Kaori, 
  
 Thanks for your sample code that helps me figure out the problem. 
  
 You can use pointLayer.Open() instead of pointLayer.FeatureSource.Open() to solve this problem. 
  
 Thanks, 
 James

Thank you! It solved. No rush, but when you have time, would you explain why I needed  pointLayer.Open() instead of pointLayer.FeatureSource.Open() ?

Kaori, 
  
 Layer.Open will initialize QueryTools so that after call it the QueryTools will be from null to instant object, but FeatureSoure.Open won’t and it will set layer.IsOpen to true so that when you next time call layer.Open won’t do anyting because it will check IsOpen property first. 
  
 Thanks, 
 James