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地图范围设置和图层事件监听的更多相关文章

  1. Jquery系列:checkbox 获取值、选中、设置值、事件监听等操作

    <div id="divId" class="divTable"> <div class="tableBody"> ...

  2. PIE SDK地图范围设置

    1.功能简介 地图范围设置主要就是对图层的地图浏览控制,例如地图的放大.缩小.漫游.全图显示.1:1视图.比例尺等功能,能更好的与地图有一个互动的地图浏览体验.PIE SDK对地图范围设置主要利用IC ...

  3. 为EditText设置OnTouchListener事件监听

    在项目中需要在EditText输入前,判断某个值是否已经有值,有才可以输入,为NULL值则提示不让输入,先填写指定的编辑框 自己试过监听获取焦点事件,来设置setFocusable(true)或者se ...

  4. [JS]笔记12之事件机制--事件冒泡和捕获--事件监听--阻止事件传播

    -->事件冒泡和捕获-->事件监听-->阻止事件传播 一.事件冒泡和捕获 1.概念:当给子元素和父元素定义了相同的事件,比如都定义了onclick事件,点击子元素时,父元素的oncl ...

  5. [问题贴]mui.openWindow+自定义事件监听操作让alert()执行两次

    仔细看,Alert函数执行了两次 共两个页面:index.html和detail.html, detail.html为按钮设置了自定义事件监听(newsId),触发alert. 在index.html ...

  6. NavigationView的头部的事件监听

    现在App的UI设计中Drawerlayout+NavigationView是一个比较常用的设计了,而以前我一般只是在Navigation中的menu(即下部的item中)添加事件监听,而今天碰到一个 ...

  7. 关于v4包的Fragment过渡动画的事件监听无响应问题解决

    项目中部分功能模块采用了单Activity+多Fragment模式,当Fragment切换时,需要在过渡动画执行完后做一些操作,通常就是在自己封装的FragmentBase中重写onCreateAni ...

  8. Spring整合redis实现key过期事件监听

    打开redis服务的配置文件   添加notify-keyspace-events Ex  如果是注释了,就取消注释 这个是在以下基础上进行添加的 Spring整合redis:https://www. ...

  9. PIE SDK地图鼠标事件监听

    1.功能简介 地图鼠标事件包含鼠标的按下MouseDown(),弹起MouseUp(),移动MouseMove()等事件,通过这些事件可以对地图进行动态的操作,接下来以地图状态栏的信息为例具体介绍如何 ...

随机推荐

  1. Oracle sql语句执行顺序(转)

    from: http://blog.csdn.net/lailai186/article/details/12612263 sql语法的分析是从右到左 一.sql语句的执行步骤:1)语法分析,分析语句 ...

  2. Java学习——JSTL标签与EL表达式之间的微妙关系

    原文总结的太好了,忍不住记录.转发. 原文地址:http://blog.csdn.net/u010168160/article/details/49182867 目录(?)[-] 一EL表达式 EL相 ...

  3. SQLServer跨库查询--分布式查询

    出处:http://www.cnblogs.com/doosmile/archive/2012/03/16/2400646.html --用openrowset连接远程SQL或插入数据 --如果只是临 ...

  4. 国外物联网平台(5):Exosite Murano

    国外物联网平台(5)——Exosite Murano 马智 定位 Murano是一个基于云的IoT软件平台,提供安全.可扩展的基础设施,支持端到端的生态系统,帮助客户安全.可扩展地开发.部署和管理应用 ...

  5. Vue 兄弟组件通过事件广播传递数据

    非父子组件传值 通过事件广播实现非父子组件传值1.新建js,引入并实例化Vue import Vue from 'vue' var VueEvent = new Vue(); export defau ...

  6. chkconfig的原理 和添加开机自启动的办法

    当我们使用 chkconfig --list的时候 都会又  123456 这样的级别. 当某个级别是 on 他就会开机启动,当他是off 的时候他就不会开机自启动. 那么这是什么原因呢?他的 原理是 ...

  7. 墨菲定律与 IndexOutOfBoundsException(数组越界异常)

    今天维护又反馈了一问题过来,查询试卷时报数组越界异常: 2017-02-28 10:45:24,827[ERROR] HttpException[10.32.111.7:60446:2D07867BE ...

  8. 深度学习之 TensorFlow(五):mnist 的 Alexnet 实现

    尝试用 Alexnet 来构建一个网络模型,并使用 mnist 数据查看训练结果. 我们将代码实现分为三个过程,加载数据.定义网络模型.训练数据和评估模型. 实现代码如下: #-*- coding:u ...

  9. 【bzoj3601】一个人的数论 莫比乌斯反演+莫比乌斯函数性质+高斯消元

    Description Sol 这题好难啊QAQ 反正不看题解我对自然数幂求和那里是一点思路都没有qwq 先推出一个可做一点的式子: \(f(n)=\sum_{k=1}^{n}[(n,k)=1]k^d ...

  10. 最近关于linux的一些小问题。

    redhat 用yum更新时需要注册付费.centos 不用. 原来版本的ifconfig 在centos中变为了ip addr.