尝试在OpenLayers 6中使用featureLoader,以便可以访问featuresloadend事件,但当我尝试加载功能时,什么也没有显示。进一步检查pointLayer显示没有功能添加到Layer。
const pointSource = new ol.source.Vector({
format: new ol.format.GeoJSON(),
loader: function(extent, resolution, projection, success, failure) {
var proj = projection.getCode();
var url = '/awdndb/monitor/geoawdndata?product=scqc1440&begin=2022-09-20&end=2022-09-20&sensor=AirTempMax2m&units=si';
var xhr = new XMLHttpRequest();
xhr.open('GET', url);
var onError = function() {
vectorSource.removeLoadedExtent(extent);
failure();
}
xhr.onerror = onError;
xhr.onload = function() {
if (xhr.status == 200) {
var features = pointSource.getFormat().readFeatures(JSON.parse(xhr.responseText));
pointSource.addFeatures(features);
success(features);
}
else {
onError();
}
}
xhr.send();
}
})
const pointLayer = new ol.layer.Vector({
source: pointSource,
title: 'pointLayer',
style: pointFunction
});
//Setup Overlay
const overlay = new ol.Overlay({
element: container,
autoPan: true,
autoPanAnimation: {
duration: 250
}
});
//Setup Map Object
const map = new ol.Map({
target: 'map',
overlays: [overlay],
view: new ol.View({
center: [-10997148, 4569099],
zoom: 5
})
});
map.addLayer(baseLayer);
map.addLayer(pointLayer);
json太大了,以至于包含了整个代码):
{"type":"FeatureCollection","crs":{"type":"name","properties":{"name":"EPSG:4326"}},"features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[-94.98,48.86]},"properties":{"name":"Williams 6N","state":"MN","county":"Lake of the Woods","sensors":["TIMESTAMP","AirTempMax2m","AirTempMax2m_SCQC_Flag"],"units":["TS","C","Flag"],"data":[["2022-09-20",20.58," "]]}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-100.61,38.51]},"properties":{"name":"Lane","state":"KS","county":"Lane","sensors":["TIMESTAMP","AirTempMax2m","AirTempMax2m_SCQC_Flag"],"units":["TS","C","Flag"],"data":[["2022-09-20",37.86," "]]}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-96.59,39.21]},"properties":{"name":"Manhattan","state":"KS","county":"Riley","sensors":["TIMESTAMP","AirTempMax2m","AirTempMax2m_SCQC_Flag"],"units":["TS","C","Flag"],"data":[["2022-09-20",37.46," "]]}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-108.72,37.53]},"properties":{"name":"Yellow Jacket","state":"CO","county":"Montezuma","sensors":["TIMESTAMP","AirTempMax2m","AirTempMax2m_SCQC_Flag"],"units":["TS","C","Flag"],"data":[["2022-09-20",24.62," "]]}},{"type":"Feature","geometry":{"type":"Point","coordinates":[-102.57,48.49]},"properties":{"name":"Powers Lake 6SE","state":"ND","county":"Mountrail","sensors":
...
1条答案
按热度按时间wh6knrhe1#
根据OpenLayers documentation,如果您将vectorsource功能作为功能集合提供,则只能获得vector.getSource().getFeature()结果。下面是我如何使用fetch async await请求解决这个问题的,希望它能有所帮助。