单击时显示 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
使用 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