我刚开始玩 MapBox,遇到了一个令人困惑的问题。我正在使用以下代码创建带有 geoJSON 图层的 map :
var map = L.mapbox.map('map', '<MapBoxID>');
var zipLayer = L.mapbox.featureLayer('data/blah.json');
zipLayer.addTo(map);
zipLayer.setStyle({color: 'red'});
map 出现并显示了 geoJSON,但它忽略了样式。不过,当我将最后一行复制到浏览器的 JS 控制台时,它工作正常。
我在这里错过了什么?此外,我已经尝试了至少十几种不同的方法来直接在 featureLayer() 调用中将样式包含在选项中,但没有任何效果。创建要素图层时如何指定样式?
最佳答案
我在这里有点猜测,因为我不太了解 Mapbox JS,但这听起来很像异步错误。奇怪的是,我在 Mapbox 或 Leaflet API 中没有看到任何关于此函数回调的信息。但是,您可以直接将 GeoJSON 传递给 featureLayer(),所以我建议使用 jQuery(或您选择的 XHR 库)来获取数据:
var map = L.mapbox.map('map', '<MapBoxID>');
var zipLayer;
$.getJSON('data/blah.json', function(data) {
zipLayer = L.mapbox.featureLayer(data);
zipLayer.addTo(map);
zipLayer.setStyle({color: 'red'});
});
希望这能解决问题。
关于javascript - 在 MapBox 中设置 geoJSON 要素图层的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23305174/