How to: Provide Additional Property Values from a Data Source Using Property Mappings

  • 3 minutes to read

To provide additional property values from a data source using property mappings, create instances of the MapRectangleWidthMapping and MapRectangleHeightMapping classes, specify their properties and add them to the DataSourceAdapterBase.PropertyMappings collection.

class StateRect {
    // The latitude of top-left angle of a rectangle.
    public double Top { get; set; }
    // The longitude of top-left angle of a rectangle.
    public double Left { get; set; }
    // The width in kilometers of a rectangle.
    public double Width { get; set; }
    // The height in kilometers of a rectangle.
    public double Height { get; set; }
}

// Create a data source.
List<StateRect> dataSource = new List<StateRect> {
    new StateRect { Top = 44.996250, Left = -111.049638, Width = 496, Height = 444 },
    new StateRect { Top = 48.990004, Left = -104.042967, Width = 480, Height = 338 },
    new StateRect { Top = 45.944326, Left = -104.042967, Width = 528, Height = 338 },
    new StateRect { Top = 41.000038, Left = -109.049518, Width = 528, Height = 445 }
};

private void Form1_Load(object sender, EventArgs e) {
    // Create a data source for the vector layer.
    var dataAdapter = new ListSourceDataAdapter();
    dataAdapter.DataSource = dataSource;
    dataAdapter.DefaultMapItemType = MapItemType.Rectangle;
    // Specify the obligatory mappings.
    dataAdapter.Mappings.Latitude = "Top";
    dataAdapter.Mappings.Longitude = "Left";
    // Add rectange specific property mappings.
    dataAdapter.PropertyMappings.AddRange(new MapItemPropertyMappingBase[] {
        new MapRectangleWidthMapping { Member = "Width", DefaultValue = 0 },
        new MapRectangleHeightMapping { Member = "Height", DefaultValue = 0 }
    });
    VectorLayer.Data = dataAdapter;
}