【10.2移动新特性】GraphicsLayer新增动态模式,性能极大提升!

        ArcGIS移动产品开发包Android和iOS 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是影响较大的初始化参数,其中,后者用来指定要素加载时标注的旋转角度:


【10.2移动新特性】GraphicsLayer新增动态模式,性能极大提升!_第1张图片

组图1:ArcGIS Android API10.2(上图)和10.1(下图)下的GraphicsLayer的构造函数

【10.2移动新特性】GraphicsLayer新增动态模式,性能极大提升!_第2张图片


        GraphicsLayer的RenderingMode是包含两个值的枚举变量,开发者在创建GraphicsLayer对象时,可指定渲染模式:

图2:GraphicsLayer的两种渲染模式

        

        DYNAMIC(动态模式)是新增的,同时也是默认值,适合数据需要经常更新、数据量比较大的情形。在动态模式下, 用户与地图交互时(如放大、缩小、平移、地图重定向等操作),几何图形仍能平滑加载。

组图3:iOS端动态模式,测试情景是选择一种模式后地图随机加载点对象。在对地图进行平移、

           缩放、旋转等操作时,点的加载过程并不受影响,图片也不会失真。


        STATIC(静态模式)是10.1中GraphicsLayer原有的模式,但在10.2中,静态模式显著的改进了性能,允许同时显示更多的几何图形。在这种模式下,几何图形第一次加载后就被栅格化,然后呈现在地图上,当旋转、平移、重定向时,可能导致一些图形符号的像素暂时失真,操作结束时才会重新加载数据。

【10.2移动新特性】GraphicsLayer新增动态模式,性能极大提升!_第3张图片

组图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移动新特性】GraphicsLayer新增动态模式,性能极大提升!)