动态地图服务在三维场景下慢和模糊的问题

背景:

动态地图服务在三维场景下不仅慢,而且显示相对模糊。ArcGIS API for JavaScript。

现象归纳:

默认情况下,会以2048*2048的size。请求两次投影后范围为xmin ymin xmax ymax的一个区域的地图。

请求1:(xmax-xmin)/2048 = view.zoom(近似取整)-1 对应级别的resolution 

请求2:(xmax-xmin)/2048 =view.zoom(近似取整)-2级别的resolution(范围较大的一次请求)。

思路:

要改进模糊问题,识别resolution较小的一次请求,尝试更改size为4096

要改进慢的问题,识别和阻断resolution值过大的一次请求。或尝试更改size为1024。

一旦视角倾斜。范围较大的请求resolution更大。对应的lod的zoom层级view.zoom - n n更大。


同事挖掘的用户需求:高分屏加速。

    1.在不存在效率问题的环境下让地图模糊问题更加清晰。

    2.自定义切片图层适应高分屏,提高效率。

2022年6月28日测试,清晰度无法通过调整width和height图片大小解决。请求来的图片不是简单贴在该位置,渲染引擎使他模糊。请求来的图片直接查看是很清晰的。

清晰问题解决方法:

增大DPI,如调整96为120。同时稍微调节width和height x1.05 或不调节图片大小,直接使用MapImageLayer设置dpi为120在SceneView中即可。文字能够更加清晰。调整完DPI后,图片大小也减小了,带宽问题也得到缓解。


dpi120的图片大小


dpi96的图片大小

大范围请求导致效率问题的解决方法:

使用BaseDynamicLayer创建自定义动态图层。重写fetchImage方法。

减少大范围请求的带宽和时间

以上代码算是针对现象归纳理论的实践。

弊端:

视角平视,远处地图级别和近处不一样,远处更为模糊,有种早版本的API的SceneView下的切片图层的割裂的感觉。这就是追求效率带来的不清晰的一点弊端。

远处地面的割裂感

还是建议设置SceneView.constraints。稍微限制一下倾斜视角,如果不是在看具体建筑物的时候。

你可能感兴趣的:(动态地图服务在三维场景下慢和模糊的问题)