void do区域检索_城市_Click(object sender, EventArgs e) { _区域检索索引.ForEach(q => _IF地图.除点(q)); var __关键字 = this.in区域检索_关键字.Text.Trim(); var __城市 = this.in区域检索_城市.Text.Trim(); try { var __点集合 = H信息查询.区域检索(__关键字, __城市); if (__点集合.Count == 0) { MessageBox.Show("未找到信息"); return; } __点集合.ForEach(q => _区域检索索引.Add(_IF地图.添加点(q.Item1, H图标.获取图标(E常用图标.默认图标_红色), q.Item2, null, null, E标题显示方式.Always))); _IF地图.定位(__点集合.Select(q => q.Item1).ToList()); } catch (NotImplementedException) { MessageBox.Show("该功能未实现"); } catch (Exception ex) { MessageBox.Show("未找到信息\n\r" + ex.Message); } }
void _区域检索_处理圆形圈选结束(M经纬度 __圆心, int __半径) { _区域检索索引.ForEach(q => _IF地图.除点(q)); var __关键字 = this.in区域检索_关键字.Text.Trim(); if (string.IsNullOrEmpty(__关键字)) { MessageBox.Show("请输入关键字"); return; } try { var __点集合 = H信息查询.区域检索(__关键字, __圆心, __半径); if (__点集合.Count == 0) { MessageBox.Show("未找到信息"); return; } __点集合.ForEach(q => _区域检索索引.Add(_IF地图.添加点(q.Item1, H图标.获取图标(E常用图标.默认图标_红色), q.Item2, null, null, E标题显示方式.Always))); //_I地图.定位(__点集合.Select(q => q.Item1).ToList()); } catch (NotImplementedException) { MessageBox.Show("该功能未实现"); } catch (Exception ex) { MessageBox.Show("未找到信息\n\r" + ex.Message); } }
void do逆地址编码_Click(object sender, EventArgs e) { var __经度 = this.in逆地址编码_经度.Text.Trim(); var __纬度 = this.in逆地址编码_纬度.Text.Trim(); if (string.IsNullOrEmpty(__经度) || string.IsNullOrEmpty(__纬度)) { _地址编码索引.ForEach(q => _IF地图.除点(q)); return; } try { var __点 = new M经纬度(double.Parse(__经度), double.Parse(__纬度)) { 类型 = E坐标类型.谷歌 }; var __地名 = H信息查询.逆地址编码(__点); if (string.IsNullOrEmpty(__地名)) { MessageBox.Show("未找到地名"); return; } _地址编码索引.Add(_IF地图.添加点(__点, H图标.获取图标(E常用图标.默认图标_红色), __地名, null, null, E标题显示方式.Always)); _IF地图.定位(__点); MessageBox.Show(__地名); } catch (NotImplementedException) { MessageBox.Show("该功能未实现"); } catch (Exception ex) { MessageBox.Show("未找到地名\n\r" + ex.Message); } }
void do地址编码_Click(object sender, EventArgs e) { var __地名 = this.in地址编码_地名.Text.Trim(); var __城市 = this.in地址编码_城市.Text.Trim(); if (string.IsNullOrEmpty(__地名)) { _地址编码索引.ForEach(q => _IF地图.除点(q)); return; } try { var __点 = H信息查询.地址编码(__地名, __城市); if (__点 == null) { MessageBox.Show("未找到地名"); return; } _地址编码索引.Add(_IF地图.添加点(__点, H图标.获取图标(E常用图标.默认图标_红色), __地名, null, null, E标题显示方式.Always)); _IF地图.定位(__点); MessageBox.Show(__点.ToString()); } catch (NotImplementedException) { MessageBox.Show("该功能未实现"); } catch (Exception ex) { MessageBox.Show("未找到地名\n\r" + ex.Message); } }
void do添加覆盖物2_Click(object sender, EventArgs e) { //添加随机用户麻点 var r = new Random(); var __图标 = H图标.获取图标(E常用图标.默认图标_红色_小); for (int i = 0; i < 5000; i++) { var __经度 = _中心位置.经度 - 0.5 + r.NextDouble() * 1; var __纬度 = _中心位置.纬度 - 0.5 + r.NextDouble() * 1; var __经纬度 = new M经纬度(__经度, __纬度); _圈选测试数据.Add(__经纬度); } //_圈选测试数据.Add(new M经纬度(118.8200000, 32.0500000)); //_圈选测试数据.Add(new M经纬度(118.8220000, 32.0520000)); //_圈选测试数据.Add(new M经纬度(118.8240000, 32.0540000)); //_圈选测试数据.Add(new M经纬度(118.8160000, 32.0560000)); //_圈选测试数据.Add(new M经纬度(118.8160000, 32.0580000)); _麻点图索引.Add(_IF地图.添加麻点图(_圈选测试数据, __图标)); //添加行政区域 var __行政区 = H行政区位置.所有.Find(q => q.省 == "江苏省" && q.市 == "南京市" && q.区 == "浦口区"); if (__行政区 != null && __行政区.边界坐标.Count > 0) { _线索引.Add(_IF地图.添加线(__行政区.边界坐标[0], 2, Color.Blue)); } }
private Bitmap 创建图标(string __类型, string __样式) { var __图片 = H图标.获取图标(E常用图标.默认图标_橙色); //return __图片; return(H合成图片.添加左侧柱状图(__图片, 5, new List <int> { 10, 5, 15 }, new List <Color> { Color.Green, Color.Red, Color.Indigo })); }
void do模拟轨迹_Click(object sender, EventArgs e) { if (_B轨迹 == null) { _B轨迹 = new B轨迹(); const int __线中点最多数量 = 5; _B轨迹.位置更新 += (string __号码, M经纬度 __最新位置, List <M经纬度> __轨迹缓存) => { if (!_B轨迹.订阅中) { return; } if (_轨迹点缓存.ContainsKey(__号码)) { _IF地图.除点(_轨迹点缓存[__号码]); } _轨迹点缓存[__号码] = _IF地图.添加点(__最新位置, H图标.获取图标(E常用图标.默认图标_蓝色), __号码); if (_轨迹线缓存.ContainsKey(__号码)) { _IF地图.除线(_轨迹线缓存[__号码]); } if (__轨迹缓存.Count >= 2) { var __点数量 = Math.Min(__轨迹缓存.Count, __线中点最多数量); _轨迹线缓存[__号码] = _IF地图.添加线(__轨迹缓存.GetRange(__轨迹缓存.Count - __点数量, __点数量), 2, Color.Yellow); } }; _B轨迹.取消完毕 += () => { _轨迹线缓存.Values.ToList().ForEach(q => _IF地图.除线(q)); _轨迹点缓存.Values.ToList().ForEach(q => _IF地图.除点(q)); _轨迹线缓存.Clear(); _轨迹点缓存.Clear(); }; } if (_B轨迹.订阅中) { _B轨迹.取消订阅(); } else { var __参数窗口 = new F轨迹参数() { StartPosition = FormStartPosition.CenterParent }; if (__参数窗口.ShowDialog() == DialogResult.OK) { _B轨迹.订阅(__参数窗口.数量, __参数窗口.频率, _中心位置); } } }
private void 显示线路(M线路 __线路, List <M地址> __可能起点, List <M地址> __可能终点, TextBox __输出信息) { _线路查询索引.ForEach(q => _IF地图.除线(q)); _线路查询索引.ForEach(q => _IF地图.除点(q)); __输出信息.Text = ""; if (__线路 == null) { __可能起点.ForEach( q => _线路查询索引.Add(_IF地图.添加点(q.坐标, H图标.获取图标(E常用图标.开始), q.称, null, null, E标题显示方式.Always))); __可能终点.ForEach( q => _线路查询索引.Add(_IF地图.添加点(q.坐标, H图标.获取图标(E常用图标.停止), q.称, null, null, E标题显示方式.Always))); _IF地图.定位(__可能起点.Concat(__可能终点).Select(q => q.坐标).ToList()); var __说明1 = new StringBuilder(); __说明1.AppendLine("可能起点:"); __可能起点.ForEach(q => { __说明1.AppendLine(q.称); if (!string.IsNullOrEmpty(q.详细地址)) { __说明1.AppendLine(q.详细地址); } if (!string.IsNullOrEmpty(q.备注)) { __说明1.AppendLine(q.备注); } __说明1.AppendLine(); }); __输出信息.Text = __说明1.ToString(); MessageBox.Show("请输入精确的起点/终点"); return; } var __说明 = new StringBuilder(); __线路.步骤说明.ForEach(q => __说明.AppendLine(q)); __输出信息.Text = string.Format("距离: {0}公里{3}{1}{3}{2}", __线路.距离 * 1.0 / 1000, __线路.备注, __说明, Environment.NewLine); _线路查询索引.Add(_IF地图.添加线(__线路.点集合, 2, Color.Blue, __线路.称)); _线路查询索引.Add(_IF地图.添加点(__线路.点集合[0], H图标.获取图标(E常用图标.开始))); _线路查询索引.Add(_IF地图.添加点(__线路.点集合[__线路.点集合.Count - 1], H图标.获取图标(E常用图标.停止))); _IF地图.定位(__线路.点集合); }
private void 添加覆盖物(string __图层名称) { var __图标1 = H图标.获取图标(E常用图标.默认图标_红色); var __图标2 = H图标.获取图标(E常用图标.开始); _点索引.Add(_IF地图.添加点(_中心位置.偏移(-0.05, 0), __图标1, "x1", new M示例业务对象 { 标识 = 1, 类型 = "基站", 称 = "基站1", 状态 = "正常" }, __图层名称, E标题显示方式.Always, true)); _点索引.Add(_IF地图.添加点(_中心位置.偏移(0.05, 0), __图标2, "y1", new M示例业务对象 { 标识 = 2, 类型 = "车台", 称 = "车台1", 状态 = "正常" }, __图层名称)); Debug.WriteLine("线起点: {0}; \r\n线终点: {1}", _中心位置.偏移(-0.05, 0), _中心位置.偏移(0.05, 0)); Debug.WriteLine("线起点: {0}; \r\n线终点: {1}", _IF地图.纠偏(_中心位置.偏移(-0.05, 0)), _IF地图.纠偏(_中心位置.偏移(0.05, 0))); _线索引.Add(_IF地图.添加线(new List <M经纬度> { _中心位置.偏移(-0.05, 0), _中心位置.偏移(0.05, 0) }, 2, Color.Red, new M示例业务对象 { 标识 = 2, 类型 = "连接状态", 称 = "基站1-车台1", 状态 = "正常" }, __图层名称)); _圆索引.Add(_IF地图.添加圆(_中心位置.偏移(-0.02, -0.02), 1000, new M区域绘制参数 { 边框宽度 = 1, 边框颜色 = Color.FromArgb(255, 0, 0, 255), 填充颜色 = Color.FromArgb(55, 135, 206, 235) }, new M示例业务对象 { 标识 = 2, 类型 = "圆", 称 = "圆1", 状态 = "正常" }, __图层名称)); _多边形索引.Add(_IF地图.添加多边形(new List <M经纬度> { _中心位置.偏移(0.02, 0.02), _中心位置.偏移(0.02, 0.03), _中心位置.偏移(0.01, 0.04), _中心位置.偏移(0.01, 0.03), _中心位置.偏移(-0.01, 0.03), }, new M区域绘制参数 { 边框宽度 = 1, 边框颜色 = Color.Blue, 填充颜色 = Color.FromArgb(55, 135, 206, 235) }, new M示例业务对象 { 标识 = 2, 类型 = "区域", 称 = "区域1", 状态 = "正常" }, __图层名称)); }
private void 显示线路(List <M线路> __线路列表, List <M地址> __可能起点, List <M地址> __可能终点, TextBox __输出信息) { _线路查询索引.ForEach(q => _IF地图.除线(q)); _线路查询索引.ForEach(q => _IF地图.除点(q)); __输出信息.Text = ""; if (__线路列表 == null) { __可能起点.ForEach( q => _线路查询索引.Add(_IF地图.添加点(q.坐标, H图标.获取图标(E常用图标.开始), q.称, null, null, E标题显示方式.Always))); __可能终点.ForEach( q => _线路查询索引.Add(_IF地图.添加点(q.坐标, H图标.获取图标(E常用图标.停止), q.称, null, null, E标题显示方式.Always))); _IF地图.定位(__可能起点.Concat(__可能终点).Select(q => q.坐标).ToList()); var __说明1 = new StringBuilder(); __说明1.AppendLine("可能起点:"); __可能起点.ForEach(q => { __说明1.AppendLine(q.称); if (!string.IsNullOrEmpty(q.详细地址)) { __说明1.AppendLine(q.详细地址); } if (!string.IsNullOrEmpty(q.备注)) { __说明1.AppendLine(q.备注); } __说明1.AppendLine(); }); __输出信息.Text = __说明1.ToString(); MessageBox.Show("请输入精确的起点/终点"); return; } var __可选颜色 = new Queue <Color>(new Color[] { Color.Red, Color.Blue, Color.Brown, Color.YellowGreen, Color.Coral, Color.Black }); var __可选颜色描述 = new Queue <string>(new string[] { "红色", "蓝色", "棕色", "绿色", "橙色", "黑色" }); if (__线路列表.Count > 6) //演示用,只取 { __线路列表 = __线路列表.Take(6).ToList(); } var __说明 = new StringBuilder(); var __所有点 = new List <M经纬度>(); __线路列表.ForEach(__线路 => { var __颜色 = __可选颜色.Dequeue(); var __颜色描述 = __可选颜色描述.Dequeue(); __说明.AppendFormat("====={0}====", __颜色描述).AppendLine().AppendLine(__线路.称).AppendLine(); __线路.步骤说明.ForEach(q => __说明.AppendLine(q)); __说明.AppendLine(); _线路查询索引.Add(_IF地图.添加线(__线路.点集合, 2, __颜色, __线路.称)); __所有点.AddRange(__线路.点集合); for (int i = 0; i < __线路.点集合.Count; i++) { if (i == 0) { _线路查询索引.Add(_IF地图.添加点(__线路.点集合[i], H图标.获取图标(E常用图标.开始), __线路.步骤说明[i])); } else if (i == __线路.点集合.Count - 1) { _线路查询索引.Add(_IF地图.添加点(__线路.点集合[i], H图标.获取图标(E常用图标.停止))); } else { _线路查询索引.Add(_IF地图.添加点(__线路.点集合[i], H图标.获取图标(E常用图标.默认图标_绿色_小), __线路.步骤说明[i])); } } }); _IF地图.定位(__所有点); __输出信息.Text = __说明.ToString(); }