ThinkGeo.com    |     Documentation    |     Premium Support

Markeroverlay question

Hello,


 


I want to draw shapes differently based on the zoom level.

I have two sort of shapes: point or polygon.



For each point i would like to show a marker for all the zoom levels.

For the polygon, i would like to show 

    - a marker when the zoom level is between 1 and 13

    - the outline of the polygon (with a InMemoryFeatureLayer i guess) when the zoom level is greater than 14.



Basically for zoom levels in which the polygon is visible, i would like to draw it, but when the polygon is not visible, I d like to  replace it by a marker.



Currently i am using a backgroundOverlay to display google maps, a InMemoryFeatureLayer in a dynamic overlay to display the polygons, and the markeroverlay to display the markers.



I cant find a way to display markers according to zoom levels and the nature of my shapes (point or polygon)

About that I am surprise not too see layers in the markeroverlay.



Thanks for your help.



Sebastien



Sebastien,



MarkerOverlay supports ZoomLevel styles which works the same as FeatureLayers. Could you please try to show us your code? Or you can check if there is projection property added for the marker overlay?



We have an online sample for the marker zoom level s:

websamples.thinkgeo.com/webe...arker.aspx



One thing I want to point is that we recommend you to use CustomOverlays; although the StaticOverlay and DynamicOverlay are easy to use but they are bad for you to extend your code in the future. Just a reminding.



If you have any questions please let me know.



Thanks,

Howard



I didnt know the customlayers was the best way to go, and indeed it should solve my problem, it seems to be much more customizable. 
 A question about customlayers, how can i render an InMemoryFeatureLayer i tried to add it to a LayerOverlay but my features are not rendered, besides i have a ColumnValues 
  
 how is FeatureOverlay for? it s an abstract class, which classes inherit FeatureOverlay? 
  
 thanks for your precious help. 
 Sebastien

Sebastien,



In Web Edition, Overlay and Layer has different meaning. For map is organized by bunch of Overlays, and overlay is rendered by bunch of layers.

I mean CustomOverlay is a better way to go. I’m not sure why the layers are not rendered, I need to check your code first.



Here is how to use CustomOverlays. One thing you need to be aware is that we don’t allow user to use preset overlays and custom overlays together.ShapeFileFeatureLayer worldLayer = new ShapeFileFeatureLayer(MapPath("~/SampleData/world/cntry02.shp"));
worldLayer.ZoomLevelSet = new GoogleMapZoomLevelSet();
worldLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.Country1;
worldLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

LayerOverlay worldOverlay = new LayerOverlay("WorldOverlay");
worldOverlay.Layers.Add(worldLayer);
Map1.CustomOverlays.Add(worldOverlay);



FeatureOverlay is an abstract class, HighlightFeatureOverlay and EditFeatureOverlay is inherited in from it. The subclasses supports rendering shapes on the client side. We have online samples for these two class:

websamples.thinkgeo.com/webe...ering.aspx

websamples.thinkgeo.com/webe...tings.aspx



Hope it make sense. Please let me know if you have any questions.



Thanks,

Howard



here is my code, i try to render a custom overlay with an inmemoryfeaturelayer inside. (the code is in the InitializeReferenceFeatureLayer method).


 


thanks for your help.


 



Sebastien,


I played with your sample you provided and found that if I set the FieldOverlay not to BaseOverlay as following, then it shows correctly.


Just try it



LayerOverlay lo = new LayerOverlay("FieldOverlay");
lo.Layers.Add(imLayer);
lo.IsBaseOverlay = false;

Any problems just let us know.


Thanks.


Yale



thats great it works perfectly. 


What is baseOverlay? 


I have another question, how do you know which overlay has to be on top of the others?


Thanks for your help.



Sebastien,



Let’s turn on the OverlaySwitcher by the following code; it will be easier to explain.Map1.MapTools.OverlaySwitcher.Enabled = true;


OverlayLaySwitcher panel on the upper right corner of the web page contains all the overlays added in the Map. They are categorized to two parts; one is BaseOverlays which with a radio button infront of its name while another one with a checkbox infront of its name.







Let’s try to click the radio button. The base overlay change to Yahoo’s map and the google map is disappeared. 







Let’s try to uncheck the States Overlay which is in Overlays group. The border of the states disappeared, but the red text and base over still exists.







Now try to uncheck all the overlay in the Overlays group. Both of the text and the border of the states disappeared.



I think it make sense by the difference of these pictures.



In all, Map Suite Map only displays one base overlay at one time, while none-base overlay can overlap with each other and display.



The order added into the map effects the order displays in the web page. We’ll automatically categorize the overlays to BaseOverlay and None-BaseOverlay type by the IsBaseOverlay property and overlap these overlays on top of the other. The base overlay always displays at the bottom; while the  later the none-base overlay is added, the higher it displays on the web page.



Please let me know if you have any more questions.



Thanks,

Howard



Sebastien,



Here attached the quick sample for the last reply. Please have a try.



Thanks,

Howard



839-Post5934.zip (2.42 KB)