【问题标题】:How do I prevent a dynamicMapLayer from refreshing on every zoom or pan of the map?如何防止 dynamicMapLayer 在地图的每次缩放或平移时刷新?
【发布时间】:2017-03-11 10:41:24
【问题描述】:

我正在使用传单L.esri.dynamicMapLayer 在地图上显示大量折线,并且向 ArcGIS Server 的导出请求以绘制它们可能需要一段时间。如果用户快速进行多次缩放或平移,我可能会收到一堆待处理的导出请求,这也会阻止对 ArcGIS Server 的其他请求。除了最后一个之外,所有这些导出请求都是无用的。

对于其他客户端层,我已经通过确保用户在自己刷新层之前停止缩放或平移至少 2 秒来控制刷新。如何对dynamicMapLayer 执行相同操作,我可以暂停或停止自动刷新并自行决定何时发出导出请求?

请注意,我们不能使用切片来获得更好的性能,因为其他原因层必须保持动态。

【问题讨论】:

    标签: javascript leaflet arcgis esri


    【解决方案1】:

    如何防止 dynamicMapLayer 在每次缩放或平移地图时刷新?

    你不能。 It is designed that way.

    除非 esri 人员重新设计它以创建 L.GridLayer 的子类而不是 L.ImageOverlay,否则几乎没有任何办法。

    我已经通过确保用户在自己刷新图层之前停止缩放或平移至少 2 秒来控制刷新。我怎样才能为dynamicMapLayer 做同样的事情?

    有一个可怕的,丑陋的黑客。覆盖私有 L.Esri.DynamicMapLayer._update 方法,使其成为前一个方法的装饰器,例如类似:

    (function() {
      var previousProto = L.Esri.DynamicMapLayer.prototype;
      L.Esri.DynamicMapLayer.include({
        _update: function(){
           throttle(previousProto._update, 2000);
        }
      });
    })();
    

    这很丑陋,它违反了大多数良好的编码实践(覆盖私有方法,eeeew),而且它可能会中断。

    请注意,我们不能使用切片来获得更好的性能,因为其他原因层必须保持动态。

    我不同意。 “瓷砖”并不意味着“静态”。您可以轻松应用缓存清除,或使用time dimension,或send all data to the client and let it slice it into vector tiles for quick rendering,或使用更高级的东西,如Carto(DB)'s Torque

    您的 Esri 工具不允许您轻松创建不同的切片集,或者不允许对更改的资源进行切片访问,或者不允许触发客户端数据失效,但这并不意味着无法实现。

    【讨论】:

    • 感谢您的回答。如何在 zoomStart 或 dragStart 上删除 dynamicMapLayer,然后在 2 秒后自己重新添加。刚试过这个,它似乎工作。它也很丑陋......但它似乎有效。对于图块,有一个属性将用作过滤器来控制哪些线条可见或不可见。该参数已经有 3 个可能的值,将来可能会更多。客户更喜欢继续使用 dynamicLayers,而我们计划在更高的缩放级别使用简化的几何图形来提高性能。可能使用 Douglas-Peucker 算法。
    • 在您的情况下,我会制作几组透明图块,并根据需要将它们添加/删除到地图中。根据需要委派特征点特征。甚至使用 VectorGrid。我发现客户提出技术问题(很多时候)是错误的方式。
    • 你应该这么说很有趣,刚刚与客户完成了一个很长的电子邮件线程,我认为她终于愿意在使用瓷砖上妥协......再开心不过了,我浪费了很多时间试图最近几天使用动态图层优化地图。她只是没有得到动态化的巨大性能影响,也不愿意在功能上妥协。即使我向她展示了一个使用瓷砖的原型以及它的速度有多快,她也不想让步。无论如何,是的,我将使用透明图块,可能是 PNG8,每个属性值一组。唷。
    • 很高兴听到这个消息:-D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 2021-02-02
    • 2013-10-11
    相关资源
    最近更新 更多