接着上一篇文章讲,地图实现显示之后,可以通过经纬度进行打点操作,实现效果如图:
在mapcontrol中添加一层
然后选择MapItemStorage
之后可以通过添加MapBubble进行添加点
也可以使用map_dot这个方法实现,代码如下:
private void map_dot(double lat, double lon)
{
DevExpress.XtraMap.MapBubble mapBubble1 = new DevExpress.XtraMap.MapBubble();
mapBubble1.Fill = System.Drawing.Color.Red;
mapBubble1.Location = new DevExpress.XtraMap.GeoPoint(lat, lon);
mapBubble1.Size = 10;
this.mapItemStorage1.Items.Add(mapBubble1);
}
这篇文章中提到的导航栏点击使gridcontrol显示https://mp.csdn.net/postedit/101680089,现在想同时通过导航栏的点击在地图上同步显示所点击的分类的数据到地图上的对应位置,即更新地图的打点,我的分类数据是存在DataTable中的,由于数据量小,每个栏一个datatable,因此需要用到DataTable的数据读取,并显示
//显示分区地图打点
private void show_dt(DataTable dt)
{
mapItemStorage1.Items.Clear();
foreach (DataRow dataRow in dt.Rows)
{
string loc = dataRow["Location"].ToString();
Regex reg = new Regex("lat\":(.+),.+long\":(.+)");
Match match = reg.Match(loc);
string lat = match.Groups[1].Value;
string lon = match.Groups[2].Value;
//Console.WriteLine(lat + " " + lon);
map_dot(Double.Parse(lat), Double.Parse(lon));
}
}
只要在分类的点击事件加上这个调用就可以
private void Click_all(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
{
gridControl1.DataSource = dt;
show_dt(dt);
}