【10.2移动新特性】GraphicsLayer新增动态模式,性能极大提升!
2013-12-20 14:33
435 查看
ArcGIS移动产品开发包Android和iOS 10.2版于前段时间正式发布,除了众所周知的强劲的离线支持,新版本中还有哪些激动人心的增强呢?请看“新特性系列博客”为您揭秘。
GraphicsLayer是ArcGIS移动API中非常重要的一种图层,是由应用程序来定义的图层,由类GraphicsLayer处理。GraphicsLayer专门绘制有空间参考的要素,并不适合绘制non-geographical要素,如指北针或copyright
text。可以用屏幕坐标来查询图层中的要素并且使用getGraphics()方法返回要素,并且支持设置图层比例尺。
在ArcGIS移动API 10.1版本中,尽管GraphicsLayer有着不错的性能, 但并不推荐在GraphicsLayer中存放太多的要素,如果必须要处理大量的要素,建议使用feature
collection来存储在feature layer中。但在10.2版本中,为GraphicsLayer提供了“静态”和“动态”两种要素渲染模式,极大的提升了要素渲染的性能。
组图1:ArcGIS Android API10.2(上图)和10.1(下图)下的GraphicsLayer的构造函数
GraphicsLayer的RenderingMode是包含两个值的枚举变量,开发者在创建GraphicsLayer对象时,可指定渲染模式:
图2:GraphicsLayer的两种渲染模式
DYNAMIC(动态模式)是新增的,同时也是默认值,适合数据需要经常更新、数据量比较大的情形。在动态模式下, 用户与地图交互时(如放大、缩小、平移、地图重定向等操作),几何图形仍能平滑加载。
组图3:iOS端动态模式,测试情景是选择一种模式后地图随机加载点对象。在对地图进行平移、
缩放、旋转等操作时,点的加载过程并不受影响,图片也不会失真。
STATIC(静态模式)是10.1中GraphicsLayer原有的模式,但在10.2中,静态模式显著的改进了性能,允许同时显示更多的几何图形。在这种模式下,几何图形第一次加载后就被栅格化,然后呈现在地图上,当旋转、平移、重定向时,可能导致一些图形符号的像素暂时失真,操作结束时才会重新加载数据。
组图4:android端的静态模式截图,在放大操作时,已加载的图形被栅格化,图形符号暂时失真,
放大操作过程中并不进行要素的加载,直到结束放大手势操作后才加载下一级别的图层。
我们推荐用户在展示的数据量比较大、数据更新较为频繁的情况下使用GraphicsLayer的动态模式,这也是API中默认的模式;静态模式与10.1的版本进行衔接,推荐在数据量较小、更新较小的情况下使用。
图5:上述测试数据在10.1和10.2的GraphicsLayer中加载时,10.2的性能明显提升
GraphicsLayer适合展示有空间参考的要素
GraphicsLayer是ArcGIS移动API中非常重要的一种图层,是由应用程序来定义的图层,由类GraphicsLayer处理。GraphicsLayer专门绘制有空间参考的要素,并不适合绘制non-geographical要素,如指北针或copyright
text。可以用屏幕坐标来查询图层中的要素并且使用getGraphics()方法返回要素,并且支持设置图层比例尺。
在ArcGIS移动API 10.1版本中,尽管GraphicsLayer有着不错的性能, 但并不推荐在GraphicsLayer中存放太多的要素,如果必须要处理大量的要素,建议使用feature
collection来存储在feature layer中。但在10.2版本中,为GraphicsLayer提供了“静态”和“动态”两种要素渲染模式,极大的提升了要素渲染的性能。
GraphicsLayer具有动态和静态两种模式
与10.1相比,GraphicsLayer的构造函数明显增多,支持更多的传入参数以对GraphicsLayer进行初始化,从下列图中可以看出,GraphicsLayer.RenderingMode 和GraphicsLayer.MarkerRotationMode是影响较大的初始化参数,其中,后者用来指定要素加载时标注的旋转角度:组图1:ArcGIS Android API10.2(上图)和10.1(下图)下的GraphicsLayer的构造函数
GraphicsLayer的RenderingMode是包含两个值的枚举变量,开发者在创建GraphicsLayer对象时,可指定渲染模式:
图2:GraphicsLayer的两种渲染模式
DYNAMIC(动态模式)是新增的,同时也是默认值,适合数据需要经常更新、数据量比较大的情形。在动态模式下, 用户与地图交互时(如放大、缩小、平移、地图重定向等操作),几何图形仍能平滑加载。
组图3:iOS端动态模式,测试情景是选择一种模式后地图随机加载点对象。在对地图进行平移、
缩放、旋转等操作时,点的加载过程并不受影响,图片也不会失真。
STATIC(静态模式)是10.1中GraphicsLayer原有的模式,但在10.2中,静态模式显著的改进了性能,允许同时显示更多的几何图形。在这种模式下,几何图形第一次加载后就被栅格化,然后呈现在地图上,当旋转、平移、重定向时,可能导致一些图形符号的像素暂时失真,操作结束时才会重新加载数据。
组图4:android端的静态模式截图,在放大操作时,已加载的图形被栅格化,图形符号暂时失真,
放大操作过程中并不进行要素的加载,直到结束放大手势操作后才加载下一级别的图层。
我们推荐用户在展示的数据量比较大、数据更新较为频繁的情况下使用GraphicsLayer的动态模式,这也是API中默认的模式;静态模式与10.1的版本进行衔接,推荐在数据量较小、更新较小的情况下使用。
GraphicsLayer性能极大提升
刚才讲到,即使在静态模式下,10.2中的GraphicsLayer性能也极大增强,表现在承载的数据量变得更大。下面的截图中,约有800个多边形要素,并且可以看到有许多不规则的多边形,它们在ArcMap中均为弧端,总的节点数没有统计。这个数据在10.1的GraphicsLayer中加载后,在缩放和平移过程中,地图的响应时间约为2秒,而在10.2中,地图实时响应操作。【测试数据由天津测绘院用户提供】图5:上述测试数据在10.1和10.2的GraphicsLayer中加载时,10.2的性能明显提升
相关文章推荐
- 【10.2移动新特性】揭秘ArcGIS 10.2移动产品的离线功能【上:桌面模式】
- 【10.2移动新特性】揭秘ArcGIS 10.2移动产品的离线功能【下:服务模式】
- ArcGIS for Android 10.2 GraphicsLayer数据显示性能增强
- 11月30日云栖精选夜读:阿里云容器服务新增支持Kubernetes编排系统,性能重大提升
- 通过 Hardware Layer 提升 Android 动画性能
- 动态的融合数据中心基础架构将最大限度地提高经济效益,并提升应用程序性能
- 【2013Esri全球用户大会精彩看点】ArcGIS 10.2移动产品新特性
- 2分法-通用存储过程分页(top max模式)版本(性能相对之前的not in版本极大提高)
- 【重磅】移动网络性能揭秘(下)--网络协议及性能提升实践
- OLTP系统的Oracle RAC性能调优,索引分区极大提升提交性能
- 27 API-反射(类的加载器,反射的使用,动态代理)&设计模式(装饰设计模式,模版设计模式)&JDK新特性(JDK5,JDK6,JDK7,DK8)
- 实测Win7下开启AHCI模式提升硬盘性能20%
- MySQL5.1新特性翻译系列 - 通过分区(Partition)提升MySQL性能
- 阿里云容器服务新增支持Kubernetes编排系统,性能重大提升
- C#3.5新增的Expression来提升反射性能
- Windows7系统借助闪存盘或移动卡的ReadyBoost来提升系统性能
- 响应式不是万能的!教你提升响应式设计的移动性能
- 2分法-通用存储过程分页(top max模式)版本(性能相对之前的not in版本极大提高)
- 开启AHCI模式,提升磁盘性能
- Eclipse 3.6M5 发布 新增动态路径变量等特性 - CSDN新闻