我遇到的情况是,在大多数情况下,我需要在VectorTile(例如市政当局(的地图上绘制一百个小特征。这一层在各种管辖模式之间切换,其中大多数模式的特征与市政模式相似,因此具有相同的性能影响。我已经将渲染模式设置为"矢量",因为这提供了清晰的功能,并且在这种情况下具有可接受的性能。然而,在一种模式中,要绘制的特征数量要多得多(大约20万个,而不是大约500个(。在这种情况下,"混合"(或"图像",但在6.6中被删除(渲染模式更合适,因为它的性能更好。
我想根据这个层的模式在"矢量"one_answers"混合"之间切换。有没有办法在构造函数之外更改层的渲染器?似乎没有"setRenderMode"方法。我可以用其他方式设置层的渲染器吗?这样我就可以在同一层内的渲染模式之间动态切换了?我同意这是一个黑客攻击,因为不幸的是,现在还不可能对每个模式进行大规模的重构来分离层。
TL;DR:是否可以有效地更改现有层中的渲染模式?
这比我想象的要简单得多。VectorTile实现将renderMode
值存储在renderMode_
中,并且在初始化层时不会初始化渲染器,而是在需要渲染时选择渲染器。因此,将CCD_ 3更改为所需的值是可行的。
this.layer.renderMode_ = isBadlyPerformingMode() ? "hybrid" : "vector";
this.layer.changed();