1. 功能简介
鹰眼图,是GIS的一个基本功能,在鹰眼图上可以可以像从空中俯视一样查看地图框中所显示的地图在整个图中的位置。
PIE SDK支持鹰眼图的功能实现;下面就具体介绍一下。
2. 功能实现说明
2.1. 实现思路及原理说明
第一步 |
在鹰眼图pannel内加载地图文档 |
第二步 |
当地图范围发生变化时MapHawkEyePmdControl_OnExtentUpdated(),鹰眼图发生变化事件 |
第三步 |
当点击鹰眼图是主地图发生相应操作事件MapHawkEyeControl_MouseDown() |
2.2. 核心接口与方法
接口/类 |
方法/属性 |
说明 |
PIE.Carto.IPmdContents |
PanTo |
坐标平移 |
PIE.AxControls.MapControl |
ToMapPoint |
将屏幕坐标转换为地图坐标 |
TrackRectangle |
鼠标绘制矩形 |
|
IPolygonElement |
Geometry |
设置或获取元素的空间信息 |
2.3. 示例代码
项目路径 |
百度云盘地址下/PIE示例程序/13.小工具集锦/鹰眼图 |
数据路径 |
百度云盘地址下/PIE示例数据/地图文档/world.pmd |
视频路径 |
百度云盘地址下/PIE视频教程/13.小工具集锦/鹰眼图.avi |
示例代码 |
|
1 //下面主要介绍的是鹰眼图和主地图相关事件的代码 2 PIE.Carto.IPmdContents m_BuddyControl; 3 /// <summary> 4 /// 鹰眼图鼠标按下事件 5 /// </summary> 6 /// <param name="sender">触发器</param> 7 /// <param name="e">触发器参数</param> 8 private void MapHawkEyeControl_MouseDown(object sender, MouseEventArgs e) 9 { 10 if (e.Button == MouseButtons.Left) 11 { 12 IPoint point = m_MapHawkEyeControl.ToMapPoint(e.X, e.Y); 13 m_BuddyControl.ActiveView.PanTo(point);//等价于MapControl.CenterAt(point); 14 } 15 else if (e.Button == System.Windows.Forms.MouseButtons.Right) 16 { 17 m_DrawElement.Geometry = null; 18 IEnvelope envelope = m_MapHawkEyeControl.TrackRectangle(); 19 m_BuddyControl.ActiveView.Extent = envelope; 20 } 21 m_BuddyControl.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll); 22 } 23 /// <summary> 24 /// 主地图范围发生变化,鹰眼图显示框 25 /// </summary> 26 /// <param name="sender"></param> 27 /// <param name="sizeChanged"></param> 28 /// <param name="newEnvelope">底图范围</param> 29 private void MapHawkEyePmdControl_OnExtentUpdated(object sender, bool sizeChanged, IEnvelope newEnvelope) 30 { 31 if (!m_IsSyn) return; 32 if (m_BuddyControl.ActiveView.FullExtent == null) return; 33 if (m_MapHawkEyeControl.ActiveView.FullExtent == null) return; 34 m_DrawElement.Geometry = newEnvelope as IGeometry; m_MapHawkEyeControl.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll); 35 } |
2.4.示例截图
原文地址:https://www.cnblogs.com/PIESat/p/10208104.html
时间: 2024-10-07 21:59:39