openlayer.overlay 当点击其他地方点时,已显示的弹窗关闭,打开新的弹窗
时间: 2024-09-15 17:11:27 浏览: 56
OpenLayers是一个强大的JavaScript库,用于处理地理空间数据和地图应用。`overlay` 是 OpenLayers 中的一个核心组件,它表示地图上动态添加的独立图层,比如信息窗口(Popup),标记图标等。
当你想要创建一个点击事件,在地图上某个位置显示弹窗,并且当用户点击其他地方时关闭当前显示的弹窗并展示新的弹窗,可以这样做:
1. 首先,你需要创建一个 `Popup` 对象,并将其绑定到地图上的特定点:
```javascript
var popup = new ol Popup({
content: '这是第一个弹窗内容',
position: [lon, lat], // lon 和 lat 是经纬度坐标
closeBox: true, // 显示关闭按钮
});
map.addOverlay(popup); // 将popup添加到地图上
```
2. 然后,你可以监听地图的 `click` 事件,检查是否已经有一个弹窗显示,如果没有,就创建新弹窗,如果有,则关闭当前的弹窗:
```javascript
map.on('click', function(event) {
if (map.hasFeatureAtPixel(event.pixel)) { // 检查是否有特征位于鼠标像素位置
var feature = map.forEachFeatureAtPixel(event.pixel, function(feature) {
return feature;
});
if (!feature || feature !== popup.feature_) { // 如果不是当前的popup或者没有feature
popup.close(); // 关闭当前的弹窗
popup = new ol.Popup({
content: '这是新的弹窗内容',
position: event.coordinate,
});
map.addOverlay(popup);
}
} else {
popup.close(); // 如果点击了空白区域,直接关闭所有弹窗
}
});
```
阅读全文