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.
Why I can't dispaly the text lable in InMemoryFeatureLayer?
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