ThinkGeo.com    |     Documentation    |     Premium Support

Requesting specific tile or tiles from server

Hi,


 


I have the USA Zipcode shapes as features in an InMemoryFeatureLayer. I let the user select 1..n of these features by drawing a shape on the map (clientside). On the serverside, I then add all the zipcode features that intersects with the drawn shape to the highlight layer.


Looking at the get request in firebug, the map control requests _all_ the tiles for _all_ the dynamic layers. What I want to do is to request only those tiles that have changed to show the selected features.


Any help is greatly appreciated.


Thanks,

Chris



Hi Chris,
 
The reason cause the full request is the page post back, if you don’t want to have the post back, please use the Ajax to implement that, here is a Ajax sample from our Code Community. 
wiki.thinkgeo.com/wiki/File:…120130.zip 
 
Hope it helps,
 
Edgar

Edgar,


 


Thank you for the great example, however, it only solves half my problem.


In the example, the red circles represent hotels and their locations. When I click on a hotel (say hotel A), it is overlayed with the highlightlayer drawn in blue. So far so good! Once I click on another hotel (B), the the highlight over hotel A is removed and replaced by a highlight over hotel B - exactly as I expected. What I want to do is is as follows:


1. Click on hotel A - expect to see highlight over hotel A(this is how it works now).


2. Click on hotel B - highlight over hotel A dissappears, and new highlight appears over hotel B (again, work as expected)


3. I want to change the color of hotel A to green (from red) when I click on hotel B to indicate that I previously clicked on hotel A.


 


Number 3 is where I need help with and would appreciate if you can extend your example to show me how to do this.


 


Thanks,


Chris



 Hello Chris,


 
 You just need use another InMemoryFeatureLayer to show the previous point, please check the code below:
 
Add this into Page_Load method to create a InMemoryFeatureLayer, and set the point style to green.

InMemoryFeatureLayer highLightLayerPrevious = new InMemoryFeatureLayer();
             highLightLayerPrevious.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.CreateSimpleCircleStyle(GeoColor.SimpleColors.Green, 13, GeoColor.StandardColors.Black, 2);
             highLightLayerPrevious.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
             Map1.DynamicOverlay.Layers.Add("HighLightLayerPrevious", highLightLayerPrevious);

Add this into RaiseCallbackEvent and before highLightLayer.InternalFeatures.Clear(), so any hotel the user clicked will remove from highLightLayer but will stored into highLightLayerPrevious.

InMemoryFeatureLayer highLightLayerPrevious = (InMemoryFeatureLayer)Map1.DynamicOverlay.Layers["HighLightLayerPrevious"];
         if (highLightLayer.InternalFeatures.Count > 0)
         {
             highLightLayerPrevious.InternalFeatures.Add(new Feature(highLightLayer.InternalFeatures[0].GetShape()));
         }

Let us know your queries.
 
Regards,
 
Gary

Gary, 
  
 Thanks for the quick reply. It works like a charm! 
  
 Thank you so much 
 Chris

Hello Chris, 
  
 You are welcome, feel free to let us know your problem. 
  
 Regards, 
  
 Gary