ThinkGeo.com    |     Documentation    |     Premium Support

Show feature labels stored in InMemoryFeatureLayer on a map

Hi Tsui,


   I haved added several polygons to a InMemoryFeatureLayer by using its instance InMemFeatLayer.InternalFeatures.add(PolyNameString,new Feature(polygon)). After doing this for all the polygon features, I add the feature layer to LayerOverlay instance

which is then added to wpfMap1.Overlays.Add. wpfMap1.Reflesh() shows me all the polygons( stored in the featuer layer) on the map.

However, the polyNameString is not shown for all the polygons.

What API can I use to show the PolyNameString at the centre of each polygons thus shown? Thanks.


Regards,


Franklin


 


 


 


 


 


 


 



Franklin,


Try to set the InmemoryFeatureLayer as following way, hope it helps:
 


InMemoryFeatureLayer inMemoryLayer = new InMemoryFeatureLayer();
 inMemoryLayer.Open();
 inMemoryLayer.Columns.Add(new FeatureSourceColumn("PolyNameString", "string", 20));
            
 
 Feature feature1 = new Feature(BaseShape.CreateShapeFromWellKnownData("POLYGON((10 60,40 70,30 85, 10 60))"));
 feature1.ColumnValues.Add("PolyNameString", "This is POLYGON");
 inMemoryLayer.InternalFeatures.Add("Polygon", feature1);
 
 Feature feature2 = new Feature(new RectangleShape(65, 30, 95, 15));
 feature2.ColumnValues.Add("PolyNameString", "This is Rectangle");
 inMemoryLayer.InternalFeatures.Add("Rectangle", feature2);
 
 inMemoryLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle.FillSolidBrush.Color = GeoColor.FromArgb(100, GeoColor.StandardColors.RoyalBlue);
 inMemoryLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle.OutlinePen.Color = GeoColor.StandardColors.Blue;
inMemoryLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle = TextStyles.Park1("PolyNameString");
inMemoryLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

 
Any more questions or concerns please do not hesitate to let me know.
 
Thanks.
 
Yale

Yale, 



Thanks very much. I am trying it out. I construct a circle shape based on Polygon outring vertices. Then I need to find the radius of such a circle. I am not sure whether polygon.OutRing.GetDistanceTo method or other method can be used to achieve this purpose.

I can find the centre of the circle.


Thanks.



Franklin



Hi Franklin, 
  
 Let us know whether the trying out goes well. 
  
 Regards, 
 Tsui

Hi Tsui, 
  
  Doesn’t seem working. Any suggestion? I will try to run the above code by itself thus finding out what goes wrong. 
  
 Regards, 
  
 Franklin

Franklin,


Thanks for your feedback.
 
Could you let me know how you construct a circle shape from a polygon shape? As I understand, when you construct it, the radius should be known, maybe I misunderstood something here.
 
Any all, following code snippet should get the radius for a circle, of course, you can use the Height instead of Width, and they should be exactly the same for circle.

EllipseShape circle;
double radius = circle.GetBoundingBox().Width / 2;

 
Any more questions or concerns please do not hesitate to let me know.
 
Thanks.
 
Yale

Franklin, 
  
 I just let you know that I have replied your answer in the new thread, so if possible, please let this thread be closed. 
 gis.thinkgeo.com/Support/DiscussionForums/tabid/143/aff/39/aft/8521/afv/topic/Default.aspx#22145 
  
  
 Thanks. 
  
 Yale 


Hi Yale, 
  
   What you suggested above works fine, after I realized the "Polygon" in line 6 is actually the label of the polygon zone. In line 5, "This is POLYGON" is replaced by the label of the polygon zone too. Then everything works beautifully. 
 Thanks very much. 
  
 Franklin 


Franklin, 
  
 Thanks for letting us know your status. 
  
 Any questions please feel free to let me know. 
  
 Thanks. 
  
 Yale