Mapbox 加载 GeoJSON 地图时,遇到 error: Style is not done loading
错误通常是由于地图样式文件没有加载完成引起的。具体来说,可能是因为 Mapbox 样式文件中包含了某些需要加载的图片或者矢量图层,而这些图片或矢量图层尚未完全加载完成,导致无法渲染地图。
为解决此问题,可以尝试以下方法:
- 通过监听
style.load
事件,确保地图样式文件已经完全加载,再加载 GeoJSON 数据。
map.on('style.load', function() {
// 其他地图样式文件的相关渲染
map.addSource('my-data', { // 添加 GeoJSON 数据
'type': 'geojson',
'data': 'my-data.geojson'
});
map.addLayer({
'id': 'my-data-layer',
'type': 'circle',
'source': 'my-data',
'paint': {
'circle-radius': 6,
'circle-color': '#FF0000'
}
});
});
- 如果仍然存在问题,可以将加载 GeoJSON 数据的部分延迟一段时间(如200ms或更多),直到 Mapbox 样式文件完全加载完成后再加载数据。
map.on('style.load', function() {
// 其他地图样式文件的相关渲染
setTimeout(function() { // 延迟加载 GeoJSON 数据
map.addSource('my-data', { // 添加 GeoJSON 数据
'type': 'geojson',
'data': 'my-data.geojson'
});
map.addLayer({
'id': 'my-data-layer',
'type': 'circle',
'source': 'my-data',
'paint': {
'circle-radius': 6,
'circle-color': '#FF0000'
}
});
}, 200); // 延迟时间可以根据实际情况调整
});
以上是两种可能的解决方法,如果仍然无法解决问题,请检查您的地图样式文件是否存在错误或其他问题。
箴言:因为这些东西是非常简单的。不要抱怨自己学不会,那是因为你没有足够用心。