ThinkGeo.com    |     Documentation    |     Premium Support

Draw Only

Hi, I have a shape file of around 2 million points for the UK. Basically I want to only draw a defined list of these. So I basically want the opposite of your DoNotDraw list. As I don't want to say do not draw 1.9 million points, I really want to say Only draw these 10,000 points.


Note, I can't use selections to select these as the points are bitmaps and we want to show the bitmaps on the map.


Is there an easy way to do this? (Draw only these recIds etc) ?



Hi Steve,



From your description, you have one list of points which you want to draw on the map, while the others don’t.



If there is no misunderstanding, ValueStyle and CustomColumnFetch is a good choice for you. Fist of all defined a custom column, set the showing flag for each record on the custom column in the CustomColumnFetch event.



Here is how to set ValueStyle and CustomColumnFetch event handler.
ValueItem valueItem1 = new ValueItem("1", PointStyles.Capital1);

ValueStyle valueStyle = new ValueStyle();
valueStyle.ColumnName = "Flag";
valueStyle.RequiredColumnNames.Add("Flag");
valueStyle.ValueItems.Add(valueItem1);

ukLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(valueStyle);
ukLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
ukLayer.FeatureSource.CustomColumnFetch += new EventHandler<CustomColumnFetchEventArgs>(FeatureSource_CustomColumnFetch);
ukLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle.RequiredColumnNames.Add("Flag");

void FeatureSource_CustomColumnFetch(object sender, CustomColumnFetchEventArgs e)
{
    if (e.ColumnName == "Flag")
    {
        e.ColumnValue = (showList.Contains(e.Id) ? "1" : "0");
    }
}

If you have any questions please let me know.



Thanks,



Howard