作者:毛毛虫


有客户在使用转换器Scaler对图层进行缩放时,说是遇到变形问题,这里就主要说一下如何对图层进行缩放。

首先看一下Scaler转换器,它的属性如下:

(图片已丢失)



注意:这个转换器简单的乘以所有的用户指定的缩放比例因子,如果对象不在坐标系统的0,0点,也不靠近0,0点,使用Scaler也会在数据中引入一个位移。


 

原图层如下:

ExtendedNestedScrollView 获取缩放比例 用scale缩放对象时_List

当我们对这个图层使用Scaler转换器,x、y轴上都设置个系数2时,生成的图层如下:

ExtendedNestedScrollView 获取缩放比例 用scale缩放对象时_List_02

转换前后的图层对比下,图层确实不同了,但是分析之后就会发现,并不是缩放之后图形发生了变形,而是Scaler转换器是对每个要素分别进行缩放的,经过缩放后,要素之间发生了覆盖,如图:

ExtendedNestedScrollView 获取缩放比例 用scale缩放对象时_图层_03

(图片已丢失)

我们只需要将这个图层进行聚合处理,使用Aggregator转换器把所有要素聚合为一个要素,然后再进行缩放就可以了。


注意使用转换器Aggregator时,需要在List Name中输入一个名称,这个生成的list可以保留原来要素的属性,转换器设置如下:


ExtendedNestedScrollView 获取缩放比例 用scale缩放对象时_缩放_04

在完成缩放后,使用Deaggregator转换器打散聚合,并在List Attribute中选择我们在Aggregator转换器中生成的List就可以把原来每个要素的属性再分配给对应的要素。

ExtendedNestedScrollView 获取缩放比例 用scale缩放对象时_图层_05

此时缩放后的效果如下:

(图片已丢失)


这时就不会有原来所认为的“变形”问题了。


 


Center Point:是以要素的中心点为参考来进行缩放的,如上面我们都是选择的这个选项。

0,0:以坐标系统的原点0,0为参考来进行缩放。如果要素的坐标与0,0相距很大,转换前后输入要素与输出要素的距离也可能很远。

如下图是我设置为0,0后的效果(做标记的位置是转换前后图层所在的位置):

(图片已丢失)

如果原数据的坐标就在0,0附近,则不会有这么大的唯一。如下图:

(图片已丢失)