Leaflet 传单图像叠加无收边功能

Leaflet 传单图像叠加无收边功能,leaflet,Leaflet,我正在从ArcGIS Web服务器读取imageOverlay URL,该服务器使用传单GetBind()坐标作为URL的一部分(我们有针对当前窗口“范围”过滤的大型地图)。抱歉没有包括实际路径(我正在处理敏感的客户端数据)。例如: http://myarcgiswebserver.com/MapServer/export/dpi=96&format=png32&bbox=27.119750976562504%2C-31.194007509998823%2C32.39044189453126%2

我正在从ArcGIS Web服务器读取imageOverlay URL,该服务器使用传单GetBind()坐标作为URL的一部分(我们有针对当前窗口“范围”过滤的大型地图)。抱歉没有包括实际路径(我正在处理敏感的客户端数据)。例如:

http://myarcgiswebserver.com/MapServer/export/dpi=96&format=png32&bbox=27.119750976562504%2C-31.194007509998823%2C32.39044189453126%2C-29.6928247398754&尺寸=1719%2C434

[bbox]=当前图像边界

拖动我的地图时,imageOverlay url会正确更新,但我的传单窗口不再与首次添加imageOverlay时设置的imageBound值对齐,从而导致输出扭曲(这是我的假设):

唯一的解决方法是删除现有的imageOverlay并添加一个新的(这会破坏用户体验,因为地图会消失,然后在每次拖动或缩放窗口时重新出现)

我处理这个问题的方法是否错误,或者引入更新当前imageBounds的函数是否可以解决这个问题?也许不是一个新的函数,而是对setUrl的扩展和附加参数

非常感谢您的反馈。

如果您使用一个,但动态更改其
url
,并使用反映新边界框的新图像,那么这确实就是您描述行为的原因:您显示一个使用新
bbox
生成的图像,但定位在初始
bbox
中,因为图像叠加在地图上保持在相同的地理位置

相反,我觉得你应该使用

它将自动为您管理边界框更新。不过,您可能需要找到正确的选项以适合服务提供商所需的URL语法


示例:

正如@ghybs指出的,使用WMS可能会更好地服务于您的用例 ArcGIS服务器的接口

不管怎样,你说

唯一的解决方法是删除现有的imageOverlay并添加一个新的(这会破坏用户体验,因为地图会消失,然后在每次拖动或缩放窗口时重新出现)

好吧,这个小故障可能是由于你做了如下事情:

  • 删除旧覆盖层
  • 添加新覆盖
  • 等待,直到从网络接收到映像
  • 等待一帧,以便显示新覆盖
相反,你应该这样做:

  • 添加新覆盖
  • 等待,直到从网络接收到映像
  • 删除旧覆盖层
  • 等待一帧,以便显示新覆盖
问题只是异步等待和可能的竞争条件,但应该很容易一起破解,例如:

var activeOverlay = null;
var overlayInRequest = null;

map.on('moveend zoomend', {

    // If we are already requesting a new overlay, ignore it.
    // This might need some additional debouncing logic to prevent
    // lots of concurrent requests
    if (overlayInRequest) {
        overlayInRequest.off('load', showOverlay);
    }

    overlayInRequest = L.imageOverlay( computeUrl( map.getBounds() ), myOverlayOptions );
    overlayInRequest.on('load', showOverlay);
});

function showOverlay(ev) {
    activeOverlay.remove();
    activeOverlay = overlayInRequest;
    activeOverlay.addTo(map);
    overlayInRequest = undefined;
}

如何在地图上添加
imageOverlay
?如果我理解正确,它不会随地图移动,因此当用户拖动/缩放时它不再对齐?嗨,它会随地图移动,但我会在缩放或拖动后强制(URL)刷新,以确保高质量的图像覆盖(以适应新的地图区域)。不幸的是,使用setUrl会导致未对齐。对齐是正确的,只有当移除图层并添加新的图像叠加时,你也可以考虑。“esri传单'L.esri.dynamicMapLayer让我指出,有一个可能会对这一点有用。嗨,Ivan,鉴于我们使用的是ARCGIS企业版,我将尝试推广WMS,而不是解决方法。可能更可持续。非常感谢您的投入和反馈!