一、多邊形shp文件結構
從此博客:SHP文件結構
其中記錄多邊形的shp文件簡單概括爲這張圖(看不清楚可以右鍵圖片-在新標籤頁中打開,或者下載查看)
二、構造GMapPolygon
//生成一個環
GMapPolygon polygon = new GMapPolygon(points, "");
polygon.Fill = new SolidBrush(Color.FromArgb(55, Color.Orange));
polygon.Stroke = new Pen(Color.Orange, 1);
//添加到圖層中
/*
* 之前的操作,構造一個border圖層,專門用來儲存polygon,添加到控件的圖層集合中
GMapOverlay bor=new GMapOverlay();
this.gMapControl1.Overlays.Add(border);
*/
border.Polygons.Add(polygon);
三、關於內環
GMap控件不支持從一個多邊形中“挖洞”的操作,在判斷一個marker或點是否位於“正常區域”中(位於外環但不位於內環中)時,可以藉助GMapPolygon的IsInside方法
private bool is_inside(PointLatLng a)
{
int sum = 0;
try
{
foreach (GMapPolygon polygon in border.Polygons)
{
if (polygon.IsInside(a))
{
sum++;
}
}
}
catch (Exception)
{
return false;
}
return sum == 1 ? true : false;
}
授人以魚不如授人以漁,我就不給出詳細的代碼了(這是“我很小氣”的一種委婉表達)