ThinkGeo.com    |     Documentation    |     Premium Support

5.0 - WrapDatelineMode - Shape Files - SingleTile

Hi Guys,


Modified the Wiki example to work with Shape Files (used countries02 from the sample data) all works as expected until you try using TyleType.SingleTile when the map stops displaying correctly.


Can you confirm if it is possible to use the WrapDateLine mode with SingleTile?


Regards


John



Hi John,


I used the following code to test WrapDataLine mode with SingleTile, it works.


wpfMap1.MapUnit = GeographyUnit.DecimalDegree;

WorldMapKitWmsWpfOverlay worldMapKitOverlay = new WorldMapKitWmsWpfOverlay();
wpfMap1.Overlays.Add(worldMapKitOverlay);
worldMapKitOverlay.WrappingMode = WrappingMode.WrapDateline;

ShapeFileFeatureLayer worldLayer = new ShapeFileFeatureLayer(@"..\..\SampleData\Data\Countries02.shp");
worldLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
worldLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.CreateSimpleAreaStyle(GeoColor.SimpleColors.Transparent, GeoColor.FromArgb(100, GeoColor.SimpleColors.Green));
worldLayer.WrappingMode = WrappingMode.WrapDateline;
worldLayer.WrappingExtent = new RectangleShape(-180,90,180,0);

LayerOverlay staticOverlay = new LayerOverlay();
staticOverlay.Layers.Add("WorldLayer", worldLayer);
staticOverlay.TileType = TileType.SingleTile;
            
wpfMap1.Overlays.Add(staticOverlay);

wpfMap1.CurrentExtent = new RectangleShape(-133.2515625, 89.2484375, 126.9046875, -88.290625);
wpfMap1.Refresh();


Please let me know if you have further questions.


Regards,


Ivan



Hi Ivan, 
  
  What it is worldLayer.WrappingExtent?

Hi Ivan,


Thanks for the code I had missed the WrappingExtent property, it works fine now.  This does need documenting or a Wiki example that shows its use.  The help file lists the property but has nothing in there to tell you what it is or what it does.


Regards


John


 



John and Ivan,


The WrappingExtent property does need to be set when using SingleTile mode.  It will throw an exception if the property is left null.  I have updated the WrappingMode and WrappingExtent properties in the wiki. 


Carlos, this property is used to specify or limit which features you want to wrap.  In most scenarios you will specify a bounding box of the entire world to include all features like Ivan did in his sample above:


worldLayer.WrappingExtent = new RectangleShape(-180,90,180,0);

Thanks,


 Phil



Thanks for the explanation Phil, 
  
  Then if I understood it correctly the right sentence would be: 
  
 
worldLayer.WrappingExtent = new RectangleShape(-180,90,180,-90);
 
  
  Riight?

Yes Carlos, that’s correct.  Sorry for the confusion.  I beleive there was a typo in Ivan’s original post and I did  not catch it on my repost.    
  
 RectangleShape(-180,90,180,-90) is the proper rectangle.   
  
 Thanks, 
  
  
 Phil

Hi Phil, 



Was not until I upgraded my project's MapSuite component to version 5 and tried to test this WrappingExtent new property that I found this property belongs to the layer, not to the overlay as I used to enable the WrappingMode before. 



Now I'm wondering why you enabled the WrappingMode per layer instead of per Overlay, and what's the difference between them (effectively having the Overlay Wrapped wraps the layers as well even if it's WrappingMode is set to none) what would be the preferred method to wrap, per layer or per overlay? and finally, what's the point of WrappingExtent? If not specified should be (-180,90,180,-90) by default, but why to wrap only a portion?



Would it be possible to know more details on what exactly you added/improved on this WrapDatelineMode feature over this latest updates?

Carlos, 
  
 Sorry for the inconvenience, currently, we have the WrappingMode property both for the overlay and layer, but the WrappingExtent is the property just for the layer. I’m doing some investigations on that and will give you the answers later.  
  
 I will let you know the exact differences between them soon, 
  
 Thanks, 
  
 Scott, 
  


Carlos, 
  
 Sorry for the response delay. Why we add the WrappingMode property to layer? Because some users want it. There are not any differences between the overlay and layer for this property. It’s up to you what you want. 
 About WrapExtent, you can wrap the specific extent when you set specific WrappingExtent, for example, you only want to show Lawrence city and want it wrap date line, so you set WrappingExtent to Lawrence’s bounding box. 
  
 Hope the answers is helpful for you, 
  
 Thanks, 
  
 Scott, 


Hi Stott, 
  
  Thanks a lot for your prompt reply. It’s clearer now. 
  
  Carlos.

Carlos, 
  
 You are welcome, any more questions please let me know again, 
  
 Thanks, 
  
 Scott,