加载后的OpenLayers无法绘制
OpenLayers after load can't draw
我做了绘制并将其保存到 GeoJson 的函数。我当时得到:result from save
接下来,当我加载功能时,当我想绘制时,我得到了错误:"layer.getSource().getFeaturesCollection()" == null 但我保存了 featureCollection 类型的功能。当我使用 getFeatures() 时,它 return 特征数组
加载层的开始:
if(map_info != "") {
var layer_area = new ol.layer.Vector({
source: new ol.source.Vector({
features: (new ol.format.GeoJSON()).readFeatures(map_info['layers'][0])
}),
});
var layer_branch = new ol.layer.Vector({
source: new ol.source.Vector({ features: (new ol.format.GeoJSON()).readFeatures(map_info['layers'][1]) })
});
var layer_region = new ol.layer.Vector({
source: new ol.source.Vector({ features: (new ol.format.GeoJSON()).readFeatures(map_info['layers'][2]) })
});
var layer_ambon = new ol.layer.Vector({
source: new ol.source.Vector({ features: (new ol.format.GeoJSON()).readFeatures(map_info['layers'][3]) })
});
var view=new ol.View({
center: [{{map.pos_x}}, {{map.pos_y}}],
zoom: {{map.zoom}}
});
}else {
var layer_area = new ol.layer.Vector({
source: new ol.source.Vector({ features: new ol.Collection() })
});
var layer_branch = new ol.layer.Vector({
source: new ol.source.Vector({ features: new ol.Collection() })
});
var layer_region = new ol.layer.Vector({
source: new ol.source.Vector({ features: new ol.Collection() })
});
var layer_ambon = new ol.layer.Vector({
source: new ol.source.Vector({ features: new ol.Collection() })
});
var view=new ol.View({
center: [2097096.387839827, 6887410.172738342],
zoom: 5
});
}
绘图函数:
$("#draw_ambon").on("click", function(){
var layer=manager["ambon"];
map.removeInteraction(draw);
select !== null ? map.removeInteraction(select) : 0;
setInteraction(layer.getSource().getFeaturesCollection(), "Point");
layer.setStyle(pointStyleFunction);
layer.setMap(map);
draw.on("drawend", function(e){
layer.getSource().addFeatures(e.feature);
e.feature.setProperties({
'id': layer.getSource().getFeaturesCollection().getLength(),
'type': "ambona",
'name': ''
})
})
});
我解决了。
只需将类 ol.Collection 添加到源中的功能选项:
source: new ol.source.Vector({ features: new ol.Collection(new ol.format.GeoJSON()).readFeatures(map_info['layers'][1])) })
我做了绘制并将其保存到 GeoJson 的函数。我当时得到:result from save
接下来,当我加载功能时,当我想绘制时,我得到了错误:"layer.getSource().getFeaturesCollection()" == null 但我保存了 featureCollection 类型的功能。当我使用 getFeatures() 时,它 return 特征数组
加载层的开始:
if(map_info != "") {
var layer_area = new ol.layer.Vector({
source: new ol.source.Vector({
features: (new ol.format.GeoJSON()).readFeatures(map_info['layers'][0])
}),
});
var layer_branch = new ol.layer.Vector({
source: new ol.source.Vector({ features: (new ol.format.GeoJSON()).readFeatures(map_info['layers'][1]) })
});
var layer_region = new ol.layer.Vector({
source: new ol.source.Vector({ features: (new ol.format.GeoJSON()).readFeatures(map_info['layers'][2]) })
});
var layer_ambon = new ol.layer.Vector({
source: new ol.source.Vector({ features: (new ol.format.GeoJSON()).readFeatures(map_info['layers'][3]) })
});
var view=new ol.View({
center: [{{map.pos_x}}, {{map.pos_y}}],
zoom: {{map.zoom}}
});
}else {
var layer_area = new ol.layer.Vector({
source: new ol.source.Vector({ features: new ol.Collection() })
});
var layer_branch = new ol.layer.Vector({
source: new ol.source.Vector({ features: new ol.Collection() })
});
var layer_region = new ol.layer.Vector({
source: new ol.source.Vector({ features: new ol.Collection() })
});
var layer_ambon = new ol.layer.Vector({
source: new ol.source.Vector({ features: new ol.Collection() })
});
var view=new ol.View({
center: [2097096.387839827, 6887410.172738342],
zoom: 5
});
}
绘图函数:
$("#draw_ambon").on("click", function(){
var layer=manager["ambon"];
map.removeInteraction(draw);
select !== null ? map.removeInteraction(select) : 0;
setInteraction(layer.getSource().getFeaturesCollection(), "Point");
layer.setStyle(pointStyleFunction);
layer.setMap(map);
draw.on("drawend", function(e){
layer.getSource().addFeatures(e.feature);
e.feature.setProperties({
'id': layer.getSource().getFeaturesCollection().getLength(),
'type': "ambona",
'name': ''
})
})
});
我解决了。 只需将类 ol.Collection 添加到源中的功能选项:
source: new ol.source.Vector({ features: new ol.Collection(new ol.format.GeoJSON()).readFeatures(map_info['layers'][1])) })