Map 3D中通过程序删除图层及数据源

简介:


在Map 3D中可以通过API来连接到SHP,Oracle等各种数据源,如果你对这个过程不熟悉,可以参考Map 3D ObjectARX SDK中的BuildMap示例,但BuildMap中没有演示如何断开到这些数据源的连接。如果你看过BuildMap的实现代码,就会发现连接到数据源其实就是创建FeatureSource资源的过程,添加图层到地图上即创建LayerDefinition的过程。那么于此对应,断开连接也就是删除相应资源的过程。

 

下面是实现从地图中删除图层并断开连接的代码(在Map 3D 2013下测试通过):

 

    [CommandMethod("RemoveLayer")]
    public void RemoveLayer()
    {
      Document doc = Application.DocumentManager.MdiActiveDocument;
      Editor ed = doc.Editor;
      Database db = doc.Database;

      AcMapMap map = AcMapMap.GetCurrentMap();
      string layerName = "layer1";

      // remove the layer
      var layers = map.GetLayers();
      if (!layers.Contains(layerName))
      {
        ed.WriteMessage("\nLayer does not exist: " + layerName);
        return;
      }

      MgLayerBase layer = layers.GetItem(layerName);
      layers.Remove(layer);

      // remove the layer resource
      MgResourceIdentifier identifier = layer.LayerDefinition;
      MgResourceService resourceService
        = AcMapServiceFactory.GetService(MgServiceType.ResourceService)
        as MgResourceService;

      if (resourceService.ResourceExists(identifier))
        resourceService.DeleteResource(identifier);

      // remove the feature source
      identifier = new MgResourceIdentifier(layer.FeatureSourceId);
      if (resourceService.ResourceExists(identifier))
        resourceService.DeleteResource(identifier);
    }

 

另外,这个方法也还有其他的妙用,今天没时间了,以后再详细写。

作者: 峻祁连
邮箱:junqilian@163.com 
出处: http://junqilian.cnblogs.com 
转载请保留此信息。



本文转自峻祁连. Moving to Cloud/Mobile博客园博客,原文链接:http://www.cnblogs.com/junqilian/archive/2012/08/02/2620490.html ,如需转载请自行联系原作者
相关文章
|
5月前
|
存储 前端开发 Java
Java【代码分享 13】前端动态添加一条记后端使用JDK1.8实现map对象根据key的部分值进行分组(将map对象封装成指定entity对象)
Java【代码分享 13】前端动态添加一条记后端使用JDK1.8实现map对象根据key的部分值进行分组(将map对象封装成指定entity对象)
26 0
|
8月前
|
人工智能 Java 机器人
实现Map批量赋值,我只需24秒搞定!
函数的功能是将一组键值对批量赋值给Map中的键。在Java中,通常使用Map的put方法逐个将键值对赋值给Map,但在某些场景下,可能需要一次性将多个键值对赋值给Map。
|
Java 数据库连接 数据库
使用JDBC(Dbutils工具包)来从数据库拿取map类型数据来动态生成insert语句
前言: 大家在使用JDBC来连接数据库时,我们通过Dbutils工具来拿取数据库中的数据,可以使用new BeanListHandler<>(所映射的实体类.class),这样得到的数据,不知道表的字段名字,我们在往数据库里添加时,需要自己来挨个写字段,非常麻烦! 于是,小编想到通过MapListHandler(),结果集为一个List<Map<String, Object>>,map中key为数据库字段名字,value为对应的值,这样就可以实现insert语句动态拼接了!!
169 3
|
Scala 开发者 Kotlin
Map 的四种构建方式 | 学习笔记
快速学习 Map 的四种构建方式
281 0
|
JSON 分布式计算 Hadoop
Map 方式|学习笔记
快速学习 Map 方式。
70 0
|
JSON 分布式计算 Hadoop
map 方式 | 学习笔记
快速学习 map 方式
69 0
|
分布式计算
mapreduce辅助排序和序列化的实例练习
mapreduce辅助排序和序列化的实例练习
mapreduce辅助排序和序列化的实例练习
|
容器
实战小技巧19:Map转换的几种方式
在日常开发过程中,从一个Map转换为另外一个Map属于基本操作了,那么我们一般怎么去实现这种场景呢?有什么更简洁省事的方法么?
1302 0
|
安全 Java
构建一个创建Map的工具类来辅助理解可变传参
虽说java作为编译语言,但是它本身也提供了很多运行时能力,今天介绍一个非常基础的知识点,可变参数传递 在日常的开发过程中,创建Map对象还是比较常见的,现在我希望写一个工具类,可以非常简单创建并初始化Map对象 因此我们可以实现一个MapUtil工具类,来支持这个场景
218 0
|
Java 开发者
【第21个代码模型】Map 集合(Map 接口概述)|学习笔记
快速学习 【 第 21 个代码模型】Map 集合(Map 接口概述)