Hi
When adding points to layer in runtime, i can't get color by value to work. If I set the default style the map shows the points, but i would like to give each point af color by value:
Anybody any idea whats wrong....
(well clipboard is not working well on this forum :() long live Notepad
private void Form1_Load(object sender, EventArgs e)
{
mapControl.MapUnit = GeographyUnit.DecimalDegree;
ShapeFileFeatureLayer worldLayer = new ShapeFileFeatureLayer(@"C:\Program Files\ThinkGeo\Map Suite Desktop Evaluation Edition 3.0 (BETA)\Samples\SampleData\Data\Countries02.shp");
InMemoryFeatureLayer pointLayer = new InMemoryFeatureLayer();
//pointLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = new PointStyle(PointSymbolType.Circle, new GeoSolidBrush(GeoColor.StandardColors.Red), 5);
pointLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
LayerOverlay pointOverlay = new LayerOverlay();
worldLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.County2;
worldLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
LayerOverlay layerOverlay = new LayerOverlay();
ValueStyle valueStyle = new ValueStyle();
valueStyle.ColumnName = "WINDSPEED";
valueStyle.IsActive = true;
valueStyle.ValueItems.Add(new ValueItem("0", new PointStyle(PointSymbolType.Circle, new GeoSolidBrush(GeoColor.StandardColors.Blue), 2)));
valueStyle.ValueItems.Add(new ValueItem("1", new PointStyle(PointSymbolType.Circle, new GeoSolidBrush(GeoColor.StandardColors.Blue), 2)));
valueStyle.ValueItems.Add(new ValueItem("2", new PointStyle(PointSymbolType.Circle, new GeoSolidBrush(GeoColor.StandardColors.Blue), 2)));
valueStyle.ValueItems.Add(new ValueItem("3", new PointStyle(PointSymbolType.Circle, new GeoSolidBrush(GeoColor.StandardColors.Blue), 2)));
valueStyle.ValueItems.Add(new ValueItem("4", new PointStyle(PointSymbolType.Circle, new GeoSolidBrush(GeoColor.StandardColors.Blue), 2)));
valueStyle.ValueItems.Add(new ValueItem("5", new PointStyle(PointSymbolType.Circle, new GeoSolidBrush(GeoColor.StandardColors.Blue), 2)));
valueStyle.ValueItems.Add(new ValueItem("6", new PointStyle(PointSymbolType.Circle, new GeoSolidBrush(GeoColor.StandardColors.Blue), 2)));
valueStyle.ValueItems.Add(new ValueItem("7", new PointStyle(PointSymbolType.Circle, new GeoSolidBrush(GeoColor.StandardColors.Blue), 2)));
valueStyle.ValueItems.Add(new ValueItem("9", new PointStyle(PointSymbolType.Circle, new GeoSolidBrush(GeoColor.StandardColors.Blue), 2)));
pointLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(valueStyle);
pointOverlay.Layers.Add("PointLayer", pointLayer);
layerOverlay.Layers.Add(worldLayer);
mapControl.Overlays.Add(layerOverlay);
mapControl.Overlays.Add("PointOverlay", pointOverlay);
mapControl.CurrentExtent = new RectangleShape(0, 78, 30, 26);
mapControl.Refresh();
}
private void btnInsertPoints_Click(object sender, EventArgs e)
{
double longStep = (9.3854 - 8.4) / 10.0;
double latStep = (56.3780 - 55.5595) / 10.0;
mapControl.Overlays["PointOverlay"].Lock.EnterWriteLock();
try
{
InMemoryFeatureLayer pointLayer = (InMemoryFeatureLayer)mapControl.FindFeatureLayer("PointLayer");
double latidude = 55.5595;
for (int i = 0; i < 10; i++)
{
double longitude = 9.3695;
for (int y = 0; y < 10; y++)
{
Feature feature = new Feature(longitude, latidude, "" + i + ":" + y);
feature.ColumnValues.Add("WINDSPEED", i.ToString());
pointLayer.InternalFeatures.Add("" + i + ":" + y, feature);
longitude += longStep;
}
latidude += latStep;
}
}
finally
{
mapControl.Overlays["PointOverlay"].Lock.ExitWriteLock();
}
mapControl.Refresh();
btnInsertPoints.Enabled = false;
}
}