取消选中有两种方式, 一种是在界面上以交互的方式取消选中,一种是用代码的方式取消选中,下面就分别介绍一下
如果是采用的默认的方式选取feature
,即使用鼠标左键单击feature
就可选取。那么这种交互方式下,要取消选中,则只需要同样使用鼠标左键,在地图其他地方单击一下,就可取消选中。 可跳到要素选取之选中样式,在第一个地图上试试。
如果采用的是自定义的方式选取feature
,那么要取消选中,交互方式还是一样的,只要目标不再是已选中的feature
就行,就能取消选中。 比如要素选取之条件过滤中,采用了自定义的鼠标移入feature
就可选中,要取消选中,只需要把鼠标移出feature
即可。
点击地图下方的“取消选中”按钮,就可触发代码,取消circle
的选中状态:
// 在地图上添加一个圆
var circle = new ol.Feature({
geometry: new ol.geom.Point(ol.proj.transform(
[104, 30], 'EPSG:4326', 'EPSG:3857'))
})
layer.getSource().addFeature(circle);
// 添加一个用于选择Feature的交互方式
var clickSelect = new ol.interaction.Select({
style: new ol.style.Style({
image: new ol.style.Circle({
radius: 10,
fill: new ol.style.Fill({
color: 'blue'
})
})
})
});
map.addInteraction(clickSelect);
// 取消选中
function unselectFeature() {
clickSelect.getFeatures().clear();
// 下面这样也是可以取消选中的,根据情况选择
// map.removeInteraction(clickSelect);
}
前面的代码都一样,关键在最后:
<div id="map" style="width: 100%"></div>
<input type="button" value="取消选中" onclick="unselectFeature();"></input>
<script type="text/javascript">
var layer = new ol.layer.Vector({
source: new ol.source.Vector(),
style: new ol.style.Style({
image: new ol.style.Circle({
radius: 10,
fill: new ol.style.Fill({
color: 'red'
})
})
})
});
var map = new ol.Map({
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
}),
layer
],
target: 'map',
view: new ol.View({
center: ol.proj.transform(
[104, 30], 'EPSG:4326', 'EPSG:3857'),
zoom: 10
})
});
// 在地图上添加一个圆
var circle = new ol.Feature({
geometry: new ol.geom.Point(ol.proj.transform(
[104, 30], 'EPSG:4326', 'EPSG:3857'))
})
layer.getSource().addFeature(circle);
// 添加一个用于选择Feature的交互方式
var clickSelect = new ol.interaction.Select({
style: new ol.style.Style({
image: new ol.style.Circle({
radius: 10,
fill: new ol.style.Fill({
color: 'blue'
})
})
})
});
map.addInteraction(clickSelect);
// 取消选中
function unselectFeature() {
clickSelect.getFeatures().clear();
// 下面这样也是可以取消选中的,根据情况选择
// map.removeInteraction(clickSelect);
}
</script>
至此,地图上元素的选取相关的知识点都介绍完毕,希望能逐个掌握并融会贯通于实际应用中。