ThinkGeo.com    |     Documentation    |     Premium Support

Why I can't dispaly the text lable in InMemoryFeatureLayer?

 Yale,

    I want to disply a point with it's name in InMemoryFeatureLayer of thinkgeo, the foolwing is my codes:

            string layerName = "PointLayer";

            string overLayerName = layerName + "Overlay";

            this.winformsMap1.MapUnit = GeographyUnit.Meter;

            InMemoryFeatureLayer memoryFeatureLayer = new InMemoryFeatureLayer();

            memoryFeatureLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.City3;

            memoryFeatureLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle = TextStyles.Capital1("City_Name");

            Dictionary<string, string> feature1Column = new Dictionary<string, string>();

            feature1Column["City_ID"] = "1";

            feature1Column["City_Name"] = "ABCDFGHJJKLK";

            feature1Column["Description"] = "City1";

            Feature feature1 = new Feature("POINT(668801 2748941)", "1", feature1Column);

            memoryFeatureLayer.InternalFeatures.Add(feature1);

            memoryFeatureLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

            LayerOverlay Overlay = new LayerOverlay();

            Overlay.Layers.Add(layerName, memoryFeatureLayer);

            this.winformsMap1.Overlays.Add(overLayerName, Overlay);

            this.winformsMap1.CurrentExtent = new RectangleShape(630870.15423556, 2774036.58264776, 705332.000715895, 2723846.95967579);

            this.winformsMap1.Refresh();      

but it works not well,it only can disply the point shape, it can't display the text label of the point.

How can I resovle the problem? I'm excepting your reply ?

thank you very much.



Senlin,


Thanks for your code. I think the problem is that you forget to add the feature source column when you define the InMemoryFeatureLayer.
 
Try the following code, hope it helps.

string layerName = "PointLayer";
            string overLayerName = layerName + "Overlay";
            this.winformsMap1.MapUnit = GeographyUnit.Meter;

            Collection<FeatureSourceColumn> featureSourceColumn = new Collection<FeatureSourceColumn>();
            featureSourceColumn.Add(new FeatureSourceColumn("City_Name","string",20));
            featureSourceColumn.Add(new FeatureSourceColumn("City_ID", "string", 20));
            featureSourceColumn.Add(new FeatureSourceColumn("Description", "string", 20));

            InMemoryFeatureLayer memoryFeatureLayer = new InMemoryFeatureLayer(featureSourceColumn, new Feature[]{});
            memoryFeatureLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.City3;
            memoryFeatureLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle = TextStyles.Capital1("City_Name");

            Dictionary<string, string> feature1Column = new Dictionary<string, string>();
            feature1Column["City_ID"] = "1";
            feature1Column["City_Name"] = "ABCDFGHJJKLK";
            feature1Column["Description"] = "City1";
            Feature feature1 = new Feature("POINT(668801 2748941)", "1", feature1Column);
            memoryFeatureLayer.InternalFeatures.Add(feature1);
            memoryFeatureLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
            LayerOverlay Overlay = new LayerOverlay();
            Overlay.Layers.Add(layerName, memoryFeatureLayer);
            this.winformsMap1.Overlays.Add(overLayerName, Overlay);
            this.winformsMap1.CurrentExtent = new RectangleShape(630870.15423556, 2774036.58264776, 705332.000715895, 2723846.95967579);
            this.winformsMap1.Refresh();



Any more questions just feel free to let me know.
 
Thanks.
 
Yale


Yale,


thank you for your help. The problem is resolved when I add the feature source column when you define the InMemoryFeatureLayer.


thanks very much! I


 

Senlin, 
  
 You are welcome, just feel comfortable to let me know if any more questions. 
  
 Thanks. 
  
 Yale