1、选择什么类型的图层

2、地图图层

3、操作层图层

4、临时的图形

在ArcGis中,图层是用来在地图中显示地理数据的。一般来说图层的数据只会来自单独的数据源,比如只来自map service URL或者只来自geodatabase数据库中的表。图层使用关联的渲染器将数据渲染成可视化符号,图层还可以为labels 和popups定义属性,以便于更方便展示数据。图层的数据和它的渲染方法是高度解耦的,所以开发人员可以能够使用各种方式来展示数据。图层的概念就如图层的名字一样,它在地图中是分层的,即一层一层地堆叠着的,并且图层的绘制是从底层到顶部绘制的。作为我们开发人员,我们可以控制图层在地图中的绘制顺序,并且设置该图层是否可见。在许多Map App中也提供的这种功能,它们允许用户自己打开或者关闭图层,让用户自己设置图层的显示顺序。

简而言之,图层可以让地理数据变得可视化,以便于我们可以探索,分析,查询和编辑地理数据。ArcGis SDK为我们提供了广泛的图层类型,用来访问各种不同的地理数据源,图层的性能取决于数据的特性以及在app中如何访问和显示数据。

接下来我们主要描述图层的类型,概述了图层的特性,并且将详细地说明我们通常如何使用图层。图层对象的获取有两种方法,第一种:我们可以通过现有的地图来获取图层的引用。第二种:我们可以创建或者添加新的图层来构建新地图。

选择图层类型

图层可以访问各种地理数据源,这些数据源本质上是静态的,我们需要根据地理数据源来选择我们的图层,使用图层访问和显示数据,以及实现我们特定的性能标准。

数据源

1、在线数据源。由GIS服务器提供Web服务,例如ArcGIS Server服务。

来自ArcGIS Server的地图服务分为两大类:tiled(平铺) 和dynamic(动态)。Tiled服务是基于图层的平铺方案提供预生成(缓存)图块。Tiled可以提供栅格图像和矢量图像。获取到数据后,layer会在客户端组装这些数据块。你可以使用tiled layer访问tiled地图服务。Dynamic地图服务,该服务是在客户端请求时,即时创建地图图像。你可以使用map image layer访问Dynamic 地图服务。

Feature(功能)服务可以让我们访问地图里面的各个功能。比如我们在ArcGIS Server上有一个features services,ArcGIS Online和Portal for ArcGIS会从一个layer的可见范围返回一个features 的set集合,或者属性和空间查询。所以,你可以使用feature layer访问这种服务。

你还可以访问mobile map packages 、tile packages、本地数据、还有网络数据。本地的数据跟在线数据一样,也拥有不同的layer类型,来访问数据。

笔记:

临时生成的地理数据(例如,查询的结果或GPS的位置)通常在图形叠加中在短期的基础上显示

Layer 类

Layer的体系结构,斜体的类名是抽象的。

Common layer properties(公共的layer属性):

所有图层类都从Layer类继承公共属性,Layer实现了Loadable接口。Loadable是用来异步加载Layer资源的接口。Layer也实现了LayerContent接口。关于Layer类和它的接口的一些公共属性,如下所示:

1、获取Layer的名称,使用getName方法。

2、查看Layer的具体说明,使用getDescription方法。

3、获取Layer的完整范围,使用getFullExtent方法。

4、获取Layer使用的空间参考,使用getSpatialReference方法。

5、隐藏或者显示Layer,使用setVisible方法。

6、控制图层的透明度,使用setOpacity方法,和opacity属性。

7、更改可见的Layer的缩放范围阈值,使用setMinScale和setMaxScale。

image-based数据源的Layer,可能允许在Layer(继承ImageAdjustmentLayer)运动的过程中调整图像亮度,对比度,和gamma度,但是底层的数据是不会更改的。

所有的Layer类不仅可以用来作为basemap,也可以用来作为操作Layer。接下来我们具体讨论BaseMap和操作Layer,但是,我们也不是说要绝对准守这些规则,我们需要选择什么类,我们应该基于对每种类型的功能和性能特性的理解。

Basemap layers

一个basemap会提供丰富的语境背景,以帮助用户定向地图。basemap提供了一个可视化框架,使用这个框架,我们可以覆盖操作层、进行分析、可视化地理信息。

Basemap数据一般来自:

1、ArcGIS Online提供了一些即用型底图,例如街道,地形,带标签的图像等。

2、你组织自己的focused basemaps。

3、将你自己的Layer混合在一个

如果你创建了自己的BaseMaps,你需要考虑的是:

1、如果数据频繁更改或如果数据在具有不同预测的地图中使用,则可能适合将数据作为动态(非缓存)地图服务发布,你可以使用ArcGIS map image layer访问这种数据。

2、如果底图数据相对静态,那么将其作为平铺(缓存)地图服务发布可能更合适。你可以使用ArcGIS tiled layer访问这种数据。

3、如果你的用户不能连接网络,那么建议使用离线的basemaps,比如:tile package、local tile缓存、mobile map package。

4、通过使用矢量平铺层,可以减少数据存储空间并且提高绘制性能

tiled layers作为basemap layers在线和离线的区别:

在线的tiled layers:

API类:ArcGISTiledLayer, ArcGISVectorTiledLayer——Tiled地图服务是连接的缓存地图服务(ArcGIS服务),缓存地图服务会在一个tiling scheme里面提供地图块的预定义比例。tiling scheme是可以通过服务来设置的。

未完待续。。。。。

android gis 框架,三、ArcGis For Android:图层(Layers)相关推荐

  1. android 电池(三):android电池系统

    android 电池(三):android电池系统 关键词:android电池系统电池系统架构 uevent power_supply驱动 平台信息: 内核:linux2.6/linux3.0 系统: ...

  2. android 转wkt格式,Arcgis for Android 空间数据WKT与JSON描述

    点线面数据标准格式 一.点 WKT: POINT(-118.4 -45.2) JSON: { "x": -118.4, "y": -45.2, "sp ...

  3. Android——编译(三):android.bp的相关知识

    本文是最后一篇,主要介绍android.bp.:转载自Android 编译之android.bp 作者:qiuxintai 链接:https://www.jianshu.com/p/f69d1c381 ...

  4. android qmui框架,腾讯QMUI Android框架使用(三)QMUIDialog

    QMUIDialog 提供了一系列常用的对话框,解决了使用系统默认对话框时在不同 Android 版本上的表现不一致的问题.使用不同的 Builder 来构建不同类型的对话框,这些 Builder 都 ...

  5. android摄像头框架,FS_S5PC100平台上Android Camera架构分析

    1. Android-Camera架构分析 Android的camera系统架构自上而下分别为应用层-框架层-硬件抽象层-linux驱动层.层与层之间通过Binder.回调函数或者系统调用联系. 我们 ...

  6. android动画框架,GitHub - azhengyongqin/CustomAnimationFramework: Android自定义曲线路径动画框架...

    Android自定义曲线路径动画框架 最近在一个项目中需要一个像QQ打开个人爱好那样的动画效果如下图: 可以看出每个小球都是以顺时针旋转出来的,说明像这样的曲线动画用Android中自带的平移动画是很 ...

  7. android插件框架机制的选择,Android插件开发初探——基础篇

    Android插件开发初探 对于Android的插件化其实已经讨论已久了,但是市面上还没有非常靠谱成熟的插件框架供我们使用.这里我们就尝试性的对比一下Java中,我们使用插件化该是一个怎么样的流程,且 ...

  8. android视频压缩框架,GitHub - tangpeng/VideoCompressor: Android 使用自带的MediaCodec 框架进行本地视频压缩,速度嗖嗖的,亲测有效!!!...

    如果您觉得本项目对你有用,请随手star,谢谢 Android 视频压缩常见3种方案:(1)FFmpeg,(2)mp4praser,(3)MediaCodec. 本demo是用android 自带的M ...

  9. android 三大框架是什么,聊聊Android中的三大框架

    为什么我们要用到开发模式,如果单单说写一些Demo或者一个工程只有几个Java文件,其实也没有别要去想太多的架构问题,直接撸代码就完事了.但是如果一个项目代码量比较多.业务比较繁琐.扩展性高.那么我们 ...

最新文章

  1. call/apply/bind 的理解与实例分享
  2. 025_html表格
  3. Tomcat已经启动
  4. poj 3797(状态压缩dp)
  5. 世纪前线网络质量测试工具 是什么_成为一名软件测试工程师有什么前途?
  6. 阿里巴巴对Java编程【安全规约】的规约
  7. 为什么80%的码农都做不了架构师?
  8. 很喜欢VS.NET 2003对条件编译的代码提示
  9. 小米蓝牙左右互联_小米真无线蓝牙耳机Air2评测:支持弹窗动画,半入耳设计全面升级...
  10. python手机版做小游戏代码大全-12岁的少年教你用Python做小游戏
  11. EBT 道客巴巴的加密与破解 - 实用组合工具箱
  12. 可视化图布局算法浅析
  13. 制作WINDOWS图标
  14. 利用MATLAB 2016a进行BP神经网络的预测(含有神经网络工具箱)
  15. 谷歌浏览器adobe flash过期解决办法
  16. 了解工业能源统计的含义、分级以及分类
  17. JavaScript工作原理
  18. 矩阵的迹\矩阵的秩\伴随矩阵\共轭矩阵,基底、维数与秩,相对某个基底的坐标计算方法
  19. 前端架构带你 封装axios,一次封装终身受益「美团后端连连点赞」
  20. Java pcm/wav文件转mp3(流的方式)

热门文章

  1. 代码执行-preg_replace
  2. python输出重定向到窗口_[python]重定向输出
  3. Git之深入解析如何使用Git的分布式工作流程与如何管理多人开发贡献的项目
  4. 我的地盘我做主——你必须遵守的Python编码规范
  5. 用几十行代码实现python中英文分词
  6. 用 libpcap抓取http报文
  7. 【STM32】中断相关函数和类型
  8. 【Linux网络编程】原始套接字实例:MAC 头部报文分析
  9. php nsdata,在iPhone中加密nsdata并在php中解密
  10. list 分组_「正则表达式」 匹配分组