1. 功能简介
地图范围设置的监听就是通过IMapControlEvents接口对地图的视图范围更新或者地图的分辨率发生变化进行监听,然后做出相应的操作。
图层事件的监听就是通过IActiveViewEvents接口对地图的添加,删除和移动图层操作进行监听,然后做出相应操作,例如鹰眼图,当监听主地图添加一个新图层数据时,鹰眼图就可以通过将新图层显示在鹰眼图中。
2. 功能实现说明
2.1. 实现思路及原理说明
第一步 | 绑定地图视图事件,添加地图控制的监听事件 |
第二步 | 根据不同的事件进行不同的功能操作 |
2.2. 核心接口与方法
接口/类 | 方法/属性 | 说明 |
PIE.Carto.IActiveViewEvents | OnLayerAdded | 图层添加事件 |
OnLayerDeleted | 图层删除事件 |
OnLayerReordered | 图层排序事件 |
PIE.AxControls.IMapControlEvents | OnExtentUpdated | 视图更新事件 |
OnResolutionUpdated | 视图分辨率更新事件 |
2.3. 示例代码
项目路径 | 百度云盘地址下/PIE示例程序/02.地图操作/02.地图图层控制/PIEMapLayerControlDemo |
数据路径 | 百度云盘地址下/PIE示例数据/栅格数据/04.World/World.tif |
视频路径 | 百度云盘地址下/PIE视频教程/02.地图操作/03.地图范围设置和图层事件监听.avi |
示例代码 |
/// <summary>
/// 构造函数
/// </summary>
public FormMain()
{
InitializeComponent();
tocControlMain.SetBuddyControl(mapControlMain as PIE.Carto.IPmdContents);
//图层控制监听事件
IActiveViewEvents activeViewEvents = mapControlMain.FocusMap as PIE.Carto.IActiveViewEvents;
activeViewEvents.OnLayerAdded += MapControl_OnLayerAdded;//图层添加事件
activeViewEvents.OnLayerDeleted += MapControl_OnLayerDeleted;//图层删除事件
activeViewEvents.OnLayerReordered+=MapControl_OnLayerReordered; //图层排序事件
//地图范围变化监听事件
PIE.AxControls.IMapControlEvents mapControlEvent= mapControlMain as PIE.AxControls.IMapControlEvents; mapControlEvent.OnExtentUpdated+=mapControlEvent_OnExtentUpdated;//地图范围变化事件
mapControlEvent.OnResolutionUpdated+=mapControlEvent_OnResolutionUpdated;//地图分辨率更新事件
}
/// <summary>
/// 图层添加事件(图层添加后会触发该事件)
/// </summary>
/// <param name="layer"></param>
private void MapControl_OnLayerAdded(ILayer layer)
{
string str = string.Format("添加{0}图层", layer.Name);
MessageBox.Show(str,"提示");
}
/// <summary>
/// 图层移除事件 (地图删除后会触发该事件)
/// </summary>
/// <param name="layer"></param>
private void MapControl_OnLayerDeleted(ILayer layer)
{
string str = string.Format("删除{0}图层", layer.Name);
MessageBox.Show(str, "提示");
}
/// <summary>
/// 图层排序事件(当图层移动后会触发该事件)
/// </summary>
/// <param name="layer"></param>
private void MapControl_OnLayerReordered(ILayer layer, int index)
{
string str = string.Format("移动{0}图层,到索引为{1}的位置", layer.Name,index);
MessageBox.Show(str, "提示");
}
/// <summary>
/// 地图范围发生变化事件
/// </summary>
/// <param name="sender"></param>
/// <param name="sizeChanged"></param>
/// <param name="newEnvelope"></param>
private void mapControlEvent_OnExtentUpdated(object sender, bool sizeChanged, IEnvelope newEnvelope)
{
MessageBox.Show("地图范围发生变化");
}
/// <summary>
/// 地图分辨率发生变化事件
/// </summary>
/// <param name="displayTransformation"></param>
private void mapControlEvent_OnResolutionUpdated(IDisplayTransformation displayTransformation)
{
MessageBox.Show("地图分辨率发生变化");
} |
2.4. 示例截图
![PIE SDK地图范围设置和图层事件监听-LMLPHP PIE SDK地图范围设置和图层事件监听-LMLPHP]()
![PIE SDK地图范围设置和图层事件监听-LMLPHP PIE SDK地图范围设置和图层事件监听-LMLPHP]()
![PIE SDK地图范围设置和图层事件监听-LMLPHP PIE SDK地图范围设置和图层事件监听-LMLPHP]()
![PIE SDK地图范围设置和图层事件监听-LMLPHP PIE SDK地图范围设置和图层事件监听-LMLPHP]()