MapPolygonPointCollectionMapping Class
Allows you to specify data members used to create map polygons.
Namespace: DevExpress.XtraMap
Assembly: DevExpress.XtraMap.v24.2.dll
Declaration
Remarks
Use MapPolygonPointCollectionMapping
to specify mappings that ListSourceDataAdapter uses to generate map polygons from collections of coordinate points.
The following properties allow you to specify data source fields that store polygon data:
- PointSourceMember
- Specifies the data member that stores polygon points.
- XCoordinateMember
- Specifies the point source data member that contains x-coordinates of points (latitudes for geo points).
- YCoordinateMember
- Specifies the point source data member that contains y-coordinates of points (latitudes for geo points).
Example
Create Polygons From a Collection of Points
The following example shows how to create map polygons based on a collection of coordinates, and configure the polygon stroke and fill colors.
Follow the steps below to create a vector layer with polygons:
Create a VectorItemsLayer object and add it to the map’s Layers collection.
Create a ListSourceDataAdapter object and assign it to the vector layer’s Data property.
Specify the adapter’s DataSource. The example below uses a list of objects that store information about polygons, such as coordinate points.
Set the adapter’s DefaultMapItemType property to
MapItemType.Polygon
to create polygon based on the data that the adapter loads.Add a
MapPolygonPointCollectionMapping
object to the adapter’s PropertyMappings. Specify the following mapping properties to define source fields from which the adapter should obtain polygon point data:- PointSourceMember – Specifies the data member that stores polygon points.
- XCoordinateMember – Specifies the point source data member that contains x-coordinates of points (longitudes for geo points).
- YCoordinateMember – Specifies the point source data member that contains y-coordinates of points (latitudes for geo points).
To customize polygon appearance settings, use mappings that correspond to map item properties. For example, add the following mappings to the adapter’s PropertyMappings collection to specify the MapItem.Stroke, MapItem.Fill, and MapItem.StrokeWidth properties:
You can use a mapping’s DefaultValue property to explicitly specify a map item property value (for example,
MapItem.Stroke
), or you can use the mapping’s Member property to map the property to a source data member.Call the MapControl.ZoomToFitLayerItems() method in the vector layer’s DataLoaded event handler to specify the map viewport boundaries so that they include all polygons.
The code below creates two polygons:
using DevExpress.XtraMap;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
namespace CreateMapPolygons {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
// Create a background image layer and add it to the map.
ImageLayer imageLayer = new ImageLayer();
imageLayer.DataProvider = new BingMapDataProvider {
BingKey = "Insert your Bing Maps key here.",
Kind = BingMapKind.RoadGray
};
mapControl1.Layers.Add(imageLayer);
// Create a vector layer and add it to the map.
VectorItemsLayer vectorLayer = new VectorItemsLayer();
mapControl1.Layers.Add(vectorLayer);
// Create a ListSourceDataAdapter.
// Specify its data source.
// Configure mappings.
// Assign the adapter to the vector layer.
ListSourceDataAdapter adapter = new ListSourceDataAdapter();
adapter.DataSource = GetPolygons();
adapter.DefaultMapItemType = MapItemType.Polygon;
adapter.PropertyMappings.Add(new MapPolygonPointCollectionMapping {
XCoordinateMember = "Longitude",
PointSourceMember = "PointSource",
YCoordinateMember = "Latitude"
});
adapter.PropertyMappings.Add(new MapItemStrokeMapping { Member = "StrokeColor" });
adapter.PropertyMappings.Add(new MapItemFillMapping { Member = "FillColor" });
adapter.PropertyMappings.Add(new MapItemStrokeWidthMapping { DefaultValue = 4 });
vectorLayer.Data = adapter;
vectorLayer.DataLoaded += OnVectorLayerDataLoaded;
}
private void OnVectorLayerDataLoaded(object sender, DataLoadedEventArgs e) {
// Zooms the map so that it displays all created polygons.
mapControl1.ZoomToFitLayerItems(paddingFactor: 0.5);
}
public List<Polygon> GetPolygons() {
List<Polygon> polygons = new List<Polygon>();
Polygon polygon1 = new Polygon();
polygon1.PointSource.Add(new Coordinate(-3.5, -30.3));
polygon1.PointSource.Add(new Coordinate(-2.4, -9.8));
polygon1.PointSource.Add(new Coordinate(-9.0, -19.4));
polygon1.PointSource.Add(new Coordinate(-12.9, -31.1));
polygon1.StrokeColor = Color.Green;
polygon1.FillColor = Color.White;
polygons.Add(polygon1);
Polygon polygon2 = new Polygon();
polygon2.PointSource.Add(new Coordinate(-13.5, -9.6));
polygon2.PointSource.Add(new Coordinate(-17.5, 0.3));
polygon2.PointSource.Add(new Coordinate(-21.8, -7.8));
polygon2.StrokeColor = Color.Red;
polygon2.FillColor = Color.DarkGray;
polygons.Add(polygon2);
return polygons;
}
}
public struct Coordinate {
public double Latitude { get; }
public double Longitude { get; }
public Coordinate(double lat, double lon) {
Latitude = lat;
Longitude = lon;
}
}
public class Polygon {
public Color StrokeColor { get; set; }
public Color FillColor { get; set; }
public List<Coordinate> PointSource { get; } = new List<Coordinate>();
}
}