0

我一直在调试 ESRI 的 ImageryLabels 底图的一个非常不寻常的问题,但到目前为止我还无法确定问题的根本原因。我想知道是否有人有类似的问题。

我想根据 ESRI https://esri.github.io/esri-leaflet/examples/basemap-with-labels.html上的示例显示带有 ImageryTransportation 和 ImageryLabels 图层的 Imagery 底图。

在我的应用程序中,Imagery 底图显示得很好。然而,没有一个标签层这样做。下面是我用来显示图层的代码。

var esriImagery = L.esri.basemapLayer('Imagery').addTo(map); /*This works*/
var esriLabels = L.esri.basemapLayer('ImageryLabels').addTo(map); /*This does not*/

如果我自己加载图像层就可以了。但是,使用完全相同的代码行,只是更改了图层名称,ImageryLabels 图层不会显示。我调查了一下,原因如下:

map.on('baselayerchange', function (e) {
console.log(e.layer);
});
  • 该层实际上已加载,我可以在 console.log() 中看到它。

  • 然而,ImageryLabels 图层中的所有图块的clientWidth设置为零,而不是 256。

  • 这种行为只发生在标签图层上,如果我将图层名称更改为其他名称,即NationalGeographic,它可以正常工作,但不适用于任何标签图层。

最后,完全相同的代码在地图全屏并占据整个页面的两个页面上运行良好。此问题仅发生在地图包含在页面上其他内容右侧的 div 中的页面上,可能不相关,但以防万一。

我将包含更多代码,但除了添加底图图层的基本行之外,似乎没有任何意义,因为它适用于除标签图层之外的所有其他底图图层。我缺少的 ESRI 标签层可能有什么特别之处吗?

如果其他人遇到此问题以及任何建议或指示,我将不胜感激。

-

4

1 回答 1

0

如果您可以整理一个简化的可重现测试用例,那将非常有帮助,因为我没有看到您在此处描述的错误:

const map = L.map('map').setView([45.528, -122.680], 13);
L.esri.basemapLayer("Imagery").addTo(map);
L.esri.basemapLayer("ImageryLabels").addTo(map);
L.esri.basemapLayer("ImageryTransportation").addTo(map);

https://jsbin.com/cijafog/edit?html,输出

于 2018-11-05T16:05:51.903 回答