ESRI Leafet ImageryLabels BasemapLayer不显示-所有图块宽度均设置为0

时间:2018-11-01 14:54:02

标签: javascript leaflet gis esri esri-leaflet

我一直在调试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*/

如果我自己加载Imagery图层,那就很好。但是,如果使用完全相同的代码行而仅更改了图层名称,则不会显示ImageryLabels图层。我进行了调查,其原因如下:

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

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

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

最后,完全相同的代码在地图全屏显示并占据整个页面的两个页面上都可以正常工作。仅在地图包含在该页面上其他内容右侧的div中的页面上才会发生此问题,可能与它无关,只是为了以防万一。

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

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

-

1 个答案:

答案 0 :(得分: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,output