Vector tile services fail to display in ArcGIS API for JavaScript 4.18 and above and return the error message, "Cannot read property 'getAttributeLocations' of undefined."
上次发布: October 29, 2021ArcGIS API for JavaScript
漏洞 ID 编号
BUG-000143069
已提交
September 21, 2021
上次修改时间
June 5, 2024
适用范围
ArcGIS API for JavaScript
找到的版本
4.20
操作系统
N/A
操作系统版本
N/A
状态
Will Not Be Addressed
开发团队已考虑过该问题或请求,并决定不会解决该问题。 问题的“其他信息”部分可能包含进一步说明。
附加信息
By definition, the JS AP identifies style-layers by their names, and the assumption is that names are unique across the style (they are case insensitive). In this particular case, there are two layers named background:
{
"id": "background",
"type": "background",
"paint": {
"background-color": "#FEFFFF"
}
},
{
"id": "Background",
"type": "fill",
"source": "esri",
"source-layer": "Background",
"layout": {},
"paint": {
"fill-color": "#A9DDEF"
}
},
The MapBox style spec indicate that layer Id (name) must be unique: https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/. The renderer is accessing the layer by it's name (using lowercase form) and therefore in this case we end up with the wrong layer type.
At 4.18, we added new methods to interact with style-layers and made some code cleaning as part of it. https://developers.arcgis.com/javascript/latest/4.18/#vectortilelayer
We can add a protection to bail out in case. BUT we end up with the wrong layer type and we would still end up not rendering all layers. This is what is happening for MapBox I am sure. So we will not add a protection to bail out in those cases. The best solution here is for the user to update their layer Ids.
This test app shows the user's vector tile layer working at JS API version 4.21. https://codepen.io/U_B_U/pen/XWgBEVX?editors=1000