如何防止动态maplayer在每次缩放或平移地图时刷新?
How do I prevent a dynamicMapLayer from refreshing on every zoom or pan of the map?
我正在使用传单L.esri.dynamicMapLayer
在地图上显示大量的折线,并且向ArcGIS服务器导出请求来绘制它们可能需要一段时间。如果用户快速进行几个缩放或平移,我可能会以一堆待处理的导出请求告终,这也会阻止其他对ArcGIS Server的请求。除了最后一个以外,所有的导出请求都是无用的。
对于其他客户端图层,我已经通过确保用户在自己刷新图层之前停止缩放或平移至少2秒来控制刷新。如何对dynamicMapLayer
执行相同的操作?我是否可以暂停或停止自动刷新,并自行决定何时要发出导出请求?
请注意,我们不能为了更好的性能而使用tile,因为其他原因层必须保持动态
如何防止
dynamicMapLayer
在每次缩放或平移地图时刷新?
你不能。它是那样设计的。
除非esri人员重新设计它以使L.GridLayer
的子类而不是L.ImageOverlay
,否则几乎没有任何方法可以绕过它。
我已经通过确保用户在自己刷新图层之前停止缩放或平移至少2秒来控制刷新。如何为
dynamicMapLayer
做同样的事情?
有一个可怕的,丑陋的hack。覆盖私有L.Esri.DynamicMapLayer._update
方法,使其成为上一个方法的装饰器,例如:
(function() {
var previousProto = L.Esri.DynamicMapLayer.prototype;
L.Esri.DynamicMapLayer.include({
_update: function(){
throttle(previousProto._update, 2000);
}
});
})();
它很丑,它违背了大多数好的编码实践(覆盖私有方法,呵呵),而且它可能会崩溃。
请注意,我们不能为了更好的性能而使用tile,因为其他原因层必须保持动态。
我不同意。"tiles"并不意味着"静态"。你可以很容易地应用缓存破坏,或者使用一个时间维度,或者将所有数据发送给客户端,并让它将其切片成矢量块以快速渲染,或者使用像Carto(DB)的Torque这样更漂亮的东西。
您的Esri工具不允许您轻松地创建不同的块集,或者不允许对更改的资源进行块访问,或者不允许触发客户端数据失效,这并不意味着它不能完成。
- 嵌入的自定义谷歌地图不会在没有刷新的情况下显示
- 谷歌地图Api v3-在Domready之后刷新Markerclusterer
- 在Jquery多步骤表单中刷新谷歌地图
- 将标记添加到现有的谷歌地图(不刷新谷歌地图)
- 谷歌地图没有在标签2中和标签3中正确加载.如何创建刷新选项卡
- 信息窗口未刷新:AngularJS和谷歌地图
- 如何刷新Bing地图AJAX
- 在不刷新的情况下跟踪某个正方形中的地图标记
- 刷新谷歌地图信息窗口中的内容
- 传单地图需要刷新页面才能显示在 Jquery 移动应用程序中
- 刷新后,OpenLayers 弹出窗口在地图上仍然可见
- 我的实时地图不会自动刷新
- 在 AngularJS 中刷新地图
- 刷新传单地图:地图容器已初始化
- 加速缩放后的传单地图刷新
- 地图刷新按钮单击Javascript
- 我的地图只在页面刷新时更新,而不是在地图刷新时更新
- 谷歌地图刷新交通层
- 防止地图刷新时,标记移动-谷歌地图API
- 谷歌地图刷新而不显示灰色