zoukankan      html  css  js  c++  java
  • PIE SDK地图范围设置和图层事件监听

     

    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

    示例代码

     1         /// <summary>
     2         /// 构造函数
     3         /// </summary>
     4         public FormMain()
     5         {
     6             InitializeComponent();
     7             tocControlMain.SetBuddyControl(mapControlMain as PIE.Carto.IPmdContents);        
     8             //图层控制监听事件
     9             IActiveViewEvents activeViewEvents = mapControlMain.FocusMap as PIE.Carto.IActiveViewEvents;
    10             activeViewEvents.OnLayerAdded += MapControl_OnLayerAdded;//图层添加事件
    11             activeViewEvents.OnLayerDeleted += MapControl_OnLayerDeleted;//图层删除事件
    12             activeViewEvents.OnLayerReordered+=MapControl_OnLayerReordered;  //图层排序事件      
    13           //地图范围变化监听事件
    14 PIE.AxControls.IMapControlEvents mapControlEvent= mapControlMain as PIE.AxControls.IMapControlEvents; mapControlEvent.OnExtentUpdated+=mapControlEvent_OnExtentUpdated;//地图范围变化事件
    15             mapControlEvent.OnResolutionUpdated+=mapControlEvent_OnResolutionUpdated;//地图分辨率更新事件                 
    16  }
    17 
    18  /// <summary>
    19         /// 图层添加事件(图层添加后会触发该事件)
    20         /// </summary>
    21         /// <param name="layer"></param>
    22         private void MapControl_OnLayerAdded(ILayer layer)
    23         {
    24             string str = string.Format("添加{0}图层", layer.Name);
    25             MessageBox.Show(str,"提示");
    26         }
    27         /// <summary>
    28         /// 图层移除事件 (地图删除后会触发该事件)
    29         /// </summary>
    30         /// <param name="layer"></param>
    31         private void MapControl_OnLayerDeleted(ILayer layer)
    32         {
    33             string str = string.Format("删除{0}图层", layer.Name);
    34             MessageBox.Show(str, "提示");
    35         }
    36         /// <summary>
    37         /// 图层排序事件(当图层移动后会触发该事件)
    38         /// </summary>
    39         /// <param name="layer"></param>
    40         private void MapControl_OnLayerReordered(ILayer layer, int index)
    41         {
    42             string str = string.Format("移动{0}图层,到索引为{1}的位置", layer.Name,index);
    43             MessageBox.Show(str, "提示");
    44         }
    45        /// <summary>
    46         /// 地图范围发生变化事件
    47         /// </summary>
    48         /// <param name="sender"></param>
    49         /// <param name="sizeChanged"></param>
    50         /// <param name="newEnvelope"></param>
    51         private void mapControlEvent_OnExtentUpdated(object sender, bool sizeChanged, IEnvelope newEnvelope)
    52         {
    53             MessageBox.Show("地图范围发生变化");
    54         }
    55         /// <summary>
    56         /// 地图分辨率发生变化事件
    57         /// </summary>
    58         /// <param name="displayTransformation"></param>
    59         private void mapControlEvent_OnResolutionUpdated(IDisplayTransformation displayTransformation)
    60         {
    61             MessageBox.Show("地图分辨率发生变化");
    62         }
    View Code

    2.4. 示例截图

     

  • 相关阅读:
    显示屏分辨率自动调整例子
    该内存不能read 或written数值 叙述
    DELPHI之关于String的内存分配(引)
    Delphi关于记录文件的操作转
    用句柄操作下拉框
    SendMessage参数
    c#通过SendMessage发送消息
    Delphi内存专题 (引)
    Delphi7 中使用ODAC存取图片
    打印机状态测试
  • 原文地址:https://www.cnblogs.com/PIESat/p/10242784.html
Copyright © 2011-2022 走看看