图层有两个常见的角色
- Basemap图层(Basemap layers )——为数据提供上下文(背景)
- 操作层(Operational layers)——正在使用的地图数据
例如,公用事业网络的地图可能在操作层中显示管道以及将街道地图作为底图(basemap)以明确这些管道服务于哪些房屋。
要了解更多关于图层的概念,请参见图层和表。要了解受支持的图层类型及其详细信息,请参阅描述的图层类型。
如果你想快速可视化应用程序可用的数据,但又不想将其存储在ArcGIS门户或图层中,请考虑使用图形(graphics)。
提示:
图层(Layer)用来在地图&场景中的地理数据
图层(Layer)通过渲染器(Renderer)来符号化数据
基础底图(Basemap)业务图层(OperationalLayers)都是layer的集合
Layer是所有图层父类
所有子类图层都继承Layer的属性
Layer的数据源既可以是在线的也可以是离线的
大多数图层既可以底图用又可以当业务图层用
大多数图层既可以在三维中使用又可以在二维中使用
仅有个别图层只能在三维里用,比如SceneLayer
仅有个别图层只能在二维里用,比如ENCLayer
在二维里用和在三维里里功能完全对等
图层类型
二维开发二维主要接口图谱 二维开发主要接口图谱
Layer与二维和三维的关系
一、操作层(Operational layers)
地图(map)和场景(scene)显示操作层属性,操作层是图层的集合。您可以从地图的操作层添加和移除图层。
ArcGISMap map = new ArcGISMap();
map.getOperationalLayers().add(someLayer);
map.getOperationalLayers().remove(someLayer);
二、底图图层(Basemap layers )
Basemaps公开一个“基础层base layers”属性,该属性包含basemap中的所有层。可以通过basemap在地图和场景上访问getBaseLayers方法。注意,当有合适的basemap可用时,建议对所有地图使用basemap。可以使用静态工厂方法(static factory )创建的一些基本地图(basemaps)示例如下:
- World imagery
- World streets
- National geographic
- World navigation (vector)
- World streets (vector)
// Use the navigation basemap constructor
ArcGISMap map = new ArcGISMap(Basemap.createNavigationVector());
// or
map.setBasemap(Basemap.createNavigationVector());
// or
map.getBasemap().getBaseLayers().add(someBasemapLayer);
三、向多组地图或场景添加一个图层(Adding a layer to muliple maps or scenes)
一个图层只能被添加到一个地图或场景一次。如果将已存在于一个地图或场景中的图层添加到另一个地图或场景中,则会抛出一个异常,并发出消息:Object is already owned。要在多个地图或场景中使用相同的图层,你有几个选项:
- 如果您需要图层位于两个地图或场景对象中(或者每个都是一个!),您可以将图层的副本添加到第二个地图或场景中。
// add the layer to the operational layers of the first map
firstMap.getOperationalLayers().add(featureLayer);
// add a copy of the layer to the operational layers of the second map
secondMap.getOperationalLayers().add(featureLayer.copy());
注意:复制/克隆方法采用特定层类型的深层复制,而不是图层基类。对原始层所做的任何更改都不会反映在该层的复制版本中。
- 从原始源数据创建一个新层。这不是推荐的方法,因为它需要访问底层数据源两次。例如,对于由在线源生成的层,这意味着访问相关服务两次。
- 如果第一幅地图或场景中不再需要该图层,则从第一幅地图或场景中移除该图层,并将其添加到第二幅地图或场景中。
firstMap.getOperationalLayers().remove(featureLayer);
secondMap.getOperationalLayers().add(featureLayer));
参考链接:
https://developers.arcgis.com/android/latest/guide/add-a-layer.htm
https://blog.csdn.net/gislaozhang/article/details/86650160
https://blog.csdn.net/gislaozhang/article/details/86688030
https://developers.arcgis.com/android/latest/guide/layer-types-described.htm