我遇到了一个OpenLayers 3.5的问题。我试图使用一次性加载策略从GeoJSON文件中获取要素。我正在向已经实例化的地图添加一个新的图层。我的代码看起来像这样:
var vectorSource = new ol.source.Vector({
url: layerInfo.url,
format: new ol.format.GeoJSON()
});
var pointsLayer = new ol.layer.Vector({
source: vectorSource,
style: styleFunc
});
that.map.addLayer(pointsLayer);
pointsLayer.setVisible(true);
然而,什么也没有显示。当我检查pointsLayer.getSource().getFeatures()
时,我发现实际上没有加载任何要素。
因此,我尝试了不同的方法来加载这些要素:
var that = this;
$.get(layerInfo.url, function(response) {
var vectorSource = new ol.source.Vector({
features: (new ol.format.GeoJSON()).readFeatures(response)
});
var pointsLayer = new ol.layer.Vector({
source: vectorSource,
style: styleFunc
});
that.map.addLayer(pointsLayer);
pointsLayer.setVisible(true);
});
这个确实有效。我被卡住了,有没有人有什么思路?非常感谢!
layerInfo.url
的请求?症状看起来有点像在同步方式下使用异步代码时发生的情况,但我对OL3的经验不足以提供更多帮助。如果我遇到这个问题,我会在浏览器的调试器中设置一些断点,并尝试跟踪请求直到OL的内部。 - kryger