ThinkGeo.com    |     Documentation    |     Premium Support

How to detect what is currently visible on the screen

Hi ThinkGeo Friends!


 


Wondering if anyone knows how to detect what is currently visible on the screen from a point shapefile or polygon shapefile?  My goal is to know what current cities are visible and display information pertaining to them on the side of the screen, beside the map.  


 


I thought I saw something like this posted on the ThinkGeo site but I was unable to find it again. 


 


Thanks in advance,


Kevin



Hey, 
  
 Just to follow up, I know I could use the extent to know what is being shown…But is there any other way?

Kevin,


  You can use the GetFeaturesWithin spatial query passing the current extent of the map at the ExtentChanged event. You can loop thru all the layers and get the list of features as a result of the spatial query. See the code below:


 


 



    protected void Map1_ExtentChanged(object sender, ExtentChangedEventArgs e)
    {
        LayerOverlay layerOverlay = (LayerOverlay)Map1.CustomOverlays[0];
        foreach (ShapeFileFeatureLayer shapeFileFeatureLayer in layerOverlay.Layers)
        {
            shapeFileFeatureLayer.FeatureSource.Open();
            Collection<Feature> features = shapeFileFeatureLayer.QueryTools.GetFeaturesWithin(e.CurrentExtent, ReturningColumnsType.AllColumns);
            shapeFileFeatureLayer.FeatureSource.Close();
        }
    }


Thanks for the Reply! 
  
 So just to clarify, this function could return the “Names” of cities that exist in a shapefile DBs and are currently in the visible ‘e.CurrentExten’?   
  
 The names would be in “Collection<Feature>features” ? 
  
 Thanks so much Val, 
  
 Kev

Kevin, 
  
  As you can see in the parameters for GetFeaturesWithin, I pass ReturningColumnsType.AllColumns. So if the collection of features returned, you will find all the column values you need. So for example, if you want to get the city name of the column called "NAME" of the first feature, the code would be: 
  
 string CityName = features[0].ColumnValues["NAME"];

Awesome!!!  
 That function call is exactly what I need! 
  
 Thanks so much, again ThinkGeo makes my life easy :) 
  
 Cheers Val, 
 Kev

Kevin, 
  
 I am also happy that you approve our works. You make our work worth. :) 
  
 Thanks, 
 James