ThinkGeo.com    |     Documentation    |     Premium Support

Getting the feature clicked on map

Hi


 


 


I am working on a ASP.net project where in I am using Thinkgeo  Mapsuite web edition-3.0 for including maps.I want to display in gridview the contents of the shapefile.


for example,I am using road.shp,waterbodies.shp........etc.......so when i click on waterbodies in map........i need to get the columns in my gridview according to the position where i clicked.


 


Please help me.I am not understanding what to do.


 


 



Bhagyashree, 
  
  We have a sample app in the "How Do I"  samples under the category "Querying Feature Layers" that pretty much shows that. It is called "Get Data When User Clicks". It uses the world data and your can click on a country and the country info is going to display in a gridview. It might not be doing exactely what you are trying to do but I think it will be a good start for you to get inspired. Thank you.

Hi 
  
 Thanx for the reply.I saw "Get Data When User Clicks" in "Querying Feature Layers" category.But it is only showing information about world layer.I also want to display information about city,waterbodies as and when the user clicks on the particular feature. 
  
 Plz help.Reply soon. 
  
  
 Thanx in advance. 
  
 Bhagyashree

Hi Bhagyashree,


If our understanding is right, your requirement is "Get the clicked feature's column information". Here we provide the sample code:


foreach (Layer layer in staticOverlay.Layers)
{
    if (layer is FeatureLayer)
    {
        layer.Open();
        Collection<Feature> selectedFeatures = ((FeatureLayer)layer).QueryTools.GetFeaturesContaining(e.Position, ReturningColumnsType.AllColumns);
        if (selectedFeatures.Count > 0)
        {
            Collection<FeatureSourceColumn> columns = ((FeatureLayer)layer).QueryTools.GetColumns();
            DataTable table = new DataTable();
            foreach (FeatureSourceColumn column in columns)
            {
                table.Columns.Add(column.ColumnName);
            }

            foreach (Feature feature in selectedFeatures)
            {
                DataRow row = table.NewRow();
                for (int i = 0; i < table.Columns.Count; i++)
                {
                    row[i]=feature.ColumnValues[table.Columns[i].ColumnName];
                }
                table.Rows.Add(row);
            }
            // Your customized logic
            break;
        }
        layer.Close();
    }
}


Thanks,

Ivan


 



Hi Ivan 
  
  
  
 Thanx for your reply. 
  
 I am completely new to thinkgeo.I tried your code but it is giving error ===The name ‘staticOverlay’ does not exist in the current context. 
  
  
 What should I do now. 
  
 Plz help.reply soon 
  
 thanx in advance 
  
 Bhagyashree  


Hi Bhagyashree, 



The sample code is a code snippet from "Get Data When User Clicks" in "How Do I Sample". Could you please check the source code related to this "How Do I Sample"? 


Here I attach the whole code for your reference.




Thanks, 

Ivan



CodeSnippet.txt (3.08 KB)

Hi  Ivan


 


 


I have attached the code with this post.You plz see it and tell me the necessary correction.


Plz help me.


 


Thanx


 


Bhagyashree



MAP_APP.txt (24.3 KB)

Ivan 
  
 I tried from "Get Data When User Clicks"  ,but still it is not working .I have already attached my code. 
  
 Plz help me.Reply soon. 
  
  
 Thanx 
  
 Bhagyashree

Hi Bhagyashree, 
  
 We noticed that you add the same layers to Map1.DynamicOverly.Layers and Map1.StaticOverlay.Layers, so you need to loop Map1.Static.Layers to get the clicked feature’s column information. 
  
 Please replace “staticOverlay.Layers” with “Map1.StaticOverlays.Layers” and have another try. 
  
 Any questions, please feel free to ask us. 
  
 Thanks, 
 Ivan

Ivan 
  
 I replaced "staticOverlay.Layers" with "Map1.StaticOverlay.Layers" ,the code got complied , but no data is displayed on map click event. 
  
 I want to display data in gridview on map click event. 
  
 Plz help me 
  
 Reply soon. 
  
 Thanx 
  
 Bhagyashree

Hi Bhagyashree, 
  
 Please debug into the Map1_Click method to see if you can find any features. 
  
 Regards, 
 Ivan

Ivan 
  
  
 Sorry but I did not understood what you want to say.Though I tried debugging…but when I debug "Unlicensed" watermark appears…so I also use "view in browser" option. 
  
 Please Help 
  
 Reply soon 
  
 thanx 
  
 Bhagyashree

Hi Bhagyashree, 
  
 Sorry for the inconvenience. Are you using evaluation editon or full editon. If you are using evaluation editon, please check whether it is expired or not. If it is expired, you can’t debug into the source code. 
  
 Thanks, 
 Ivan

Ivan 
  
  
 I am using Full edition  and  not Evalution edition…what should I do???Plz help me …its urgent…I have to complete my project…I hope you have understood what exactly I wanted to do in my application. 
  
 Reply soon. 
  
 Thanx 
  
 Bhagyashree

Hi Bhagyashree, 



Because you are using Full editon, we can't fully understand this sentence -- "but when I debug "Unlicensed" watermark appears............". Do you mean you can't debug into your source code. We understand your requirement but you should set break points in your source code to see which features you have found in "Map1_Click" method. 



Regards, 

Ivan



Ivan 
  
 I inserted breakpoint at  Map1_Click method and debugged it …Using F11 I went through each sentence of Map1_Click Method…the control went through foreach loop twice…but at the end no table containnig the data about feature clicked was displayed. 
  
 Please help me…Plz check my code again and tell me the corrections…Reply soon 
  
 Thanx 
  
 Bhagyashree

Hi Bhagyashree, 

 


Could you please provide us the latest code you used?




Regards, 

Ivan



Hi  Ivan


 


 


Here is the code.Please reply soon .



005_004_003_002_001_Code.txt (24.3 KB)

Hi Bhagyashree,  
  
 We noticed that in the latest code you provided, there isn’t any logic to display data. We just get the table you needed, you should use your own logic to display the data.  
  
 Hint: you may need to add watch to local variable “table” and see if it contains rows while debugging. 
  
 Regards,  
 Ivan

Ivan 
  
  
 Thanx for detecting my problem…now I will improve my code and see if it works… 
  
 Thanx again for your valuable help. 
  
 Regards 
  
 Bhagyashree