ol4实现针对选定图层的选择和删除功能
<!doctype html>
<html>
<head>
<title>Simple Select</title>
<link rel="stylesheet" href="https://openlayers.org/en/v4.6.4/css/ol.css" type="text/css">
<!-- The line below is only needed for old environments like Internet Explorer and Android 4.x -->
<script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=requestAnimationFrame,Element.prototype.classList,URL"></script>
<script src="https://openlayers.org/en/v4.6.4/build/ol.js"></script>
</head>
<body>
<input type="button" onclick="DeleteFeature()" value="删除">
<div id="map" class="map"></div>
<script>
var image = new ol.style.Circle({
radius: 5,
fill: null,
stroke: new ol.style.Stroke({color: 'red', width: 1})
});
var styles ={
'Point': new ol.style.Style({
image: image
})
};
var styleFunction = function(feature) {
return styles[feature.getGeometry().getType()];
};
var VectorSource = new ol.source.Vector({WrapX:false});
var VectotLayer = new ol.layer.Vector({
id:'eur',
source:VectorSource,
style: styleFunction
});
var map = new ol.Map({
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
}),VectotLayer
],
target: 'map',
view: new ol.View({
center: [0, 0],
zoom: 2
})
});
var DrawFeature = new ol.Feature({
geometry: new ol.geom.Point([0,0])
});
VectorSource.addFeature(DrawFeature);
var selectFeature;
map.on('click',function (evt) {
var feature = map.forEachFeatureAtPixel(evt.pixel,
function (feature) {
return feature;
},{
layerFilter: function (layer) {
return layer.get('id') === 'eur';
}
}
);
if(feature){
selectFeature = feature;
selectFeature.setStyle(new ol.style.Style({
image:new ol.style.Circle({
radius:10,
stroke:new ol.style.Stroke({
color:'blue',
width:4
})
})
}));
}
});
function DeleteFeature() {
VectotLayer.getSource().removeFeature(selectFeature);
}
</script>
</body>
</html>
转载自:https://blog.csdn.net/lvjinhu/article/details/79033599