单击时显示 GeoJSON 功能 (OpenLayers 4)

Show GeoJSON features on click (OpenLayers 4)

使用 OpenLayers 4 显示带有 GeoJSON 数据的地图(其中很少有多边形和圆形特征)。加载一切都按预期显示。

现在尝试在 ajax onClick 事件中显示不同的 GeoJson 数据。已尝试 docketSource.refresh(); 但无法正常工作。请给我一个解决方案。

我的按钮

<p:commandButton value="Change Data" ajax="true"
actionListener="#{geojsonMapController.prepareGeoJson}" oncomplete="changeGeoJsonData();"/>

JS代码

var map, docketLayer, docketSource;    

docketSource = new ol.source.Vector({
    url:'http://localhost:8080/mapApp/resources/map/fetch?111',
    format: new ol.format.GeoJSON()
});

docketLayer = new ol.layer.Vector({
    source: docketSource,
    style: styleFunction
}); 

map = new ol.Map({
    layers: [docketLayer],
    target: 'map',
    view: new ol.View({
        center: [0, 0],
        zoom: 1
    })
});

function changeGeoJsonData(){
    docketSource = new ol.source.Vector({
    url: 'http://localhost:8080/mapApp/resources/map/fetch?555',
        format: new ol.format.GeoJSON()
    });
    docketSource.refresh();
}

您似乎没有更新 Vector 源。您应该在向量上调用 setSource() 方法:

docketLayer.setSource(...); <-- new Source config here