[英]How do I prevent a dynamicMapLayer from refreshing on every zoom or pan of the map?
我正在使用传单L.esri.dynamicMapLayer
在地图上显示大量折线,并且向ArcGIS Server导出它们的导出请求可能需要一段时间。 如果用户快速制作多个缩放或平移,我最终会得到一堆待处理的导出请求,这也会阻止对ArcGIS Server的其他请求。 除了最后一个之外的所有那些导出请求都是无用的
对于其他客户端层,我已经通过确保用户已经停止缩放或平移至少2秒来控制刷新,然后自己刷新图层。 我如何为dynamicMapLayer
做同样的dynamicMapLayer
,我可以暂停或停止自动刷新,并在我想要进行导出请求时自行决定吗?
请注意,由于其他原因,图层必须保持动态,因此我们无法使用图块来获得更好的性能。
如何防止
dynamicMapLayer
在地图的每个缩放或平移上刷新?
你不能。 它就是这样设计的 。
除非esri人重新设计制作L.GridLayer
的子类而不是L.ImageOverlay
, L.ImageOverlay
几乎没有办法解决它。
我已经通过确保用户已经停止缩放或平移至少2秒来控制刷新,然后自己刷新图层。 我如何为
dynamicMapLayer
做同样的dynamicMapLayer
?
有一个可怕的,丑陋的黑客。 覆盖私有的L.Esri.DynamicMapLayer._update
方法,使其成为前一个方法的装饰器,例如:
(function() {
var previousProto = L.Esri.DynamicMapLayer.prototype;
L.Esri.DynamicMapLayer.include({
_update: function(){
throttle(previousProto._update, 2000);
}
});
})();
它很丑陋,它反对大多数好的编码实践(覆盖私有方法,eeeew),它可能会破坏。
请注意,由于其他原因,图层必须保持动态,因此我们无法使用图块来获得更好的性能。
我不同意。 “瓷砖”并不意味着“静止”。 您可以轻松应用缓存清除,或使用时间维度 ,或将所有数据发送到客户端,然后将其切片为矢量切片以便快速渲染 ,或者使用像Carto(DB)的Torque这样的更高级的东西。
您的Esri工具不允许您轻松创建不同的磁贴集,或者不允许平铺访问更改资源,或者不允许触发客户端数据失效,这并不意味着它不能实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.