单击没有特征的地图时隐藏弹出窗口
Hide popup when onclick of map where no features
我正在开发一个使用 openlayers 和 geoserver 显示弹出窗口的项目。我已经成功创建了显示弹出窗口的脚本。在那里,我使用 highcharts 库在弹出窗口覆盖内创建了一个图表。我在地图 [Geoserver 层] 中有许多可用的图例或标记。
当用户点击地图内的任何点时,我已经成功地生成了弹出窗口。我的问题是,当我点击不存在任何点的地图时,我得到一个空白的弹出窗口。
我试过设置点击时没有数据解析的条件,设置为popup.hide();。
// map variable
var map = new ol.Map({
controls: ol.control.defaults({
attributionOptions: ({
collapsible: false // Make the attribution non collapsible
})
}).extend([mousePositionControl]),
target: 'map',
view: view // Set view
});
/*
* Add a click handler to the map to render the popup.
*/
/*Attribute popup*/
/*Display the Data in a popup box*/
var popup = new ol.Overlay.Popup();
map.addOverlay(popup);
map.on('singleclick', function(evt) {
popup.show(evt.coordinate,popup);
});
你尝试了吗
reqwest({
url: urlIndia,
type: 'json',
}).then(function (data) {
if (data.features.length == 0) {
popup.hide();
return;
}
for (var i = 0; i < data.features.length; i++)
{
在你的点击事件中试试这个
var feature = map.forEachFeatureAtPixel(evt.pixel,
function (feature) {
return feature;
});
if (feature) { what you want to do }
看看这个link可能对你有帮助https://embed.plnkr.co/plunk/hhEAWk
我正在开发一个使用 openlayers 和 geoserver 显示弹出窗口的项目。我已经成功创建了显示弹出窗口的脚本。在那里,我使用 highcharts 库在弹出窗口覆盖内创建了一个图表。我在地图 [Geoserver 层] 中有许多可用的图例或标记。
当用户点击地图内的任何点时,我已经成功地生成了弹出窗口。我的问题是,当我点击不存在任何点的地图时,我得到一个空白的弹出窗口。
我试过设置点击时没有数据解析的条件,设置为popup.hide();。
// map variable
var map = new ol.Map({
controls: ol.control.defaults({
attributionOptions: ({
collapsible: false // Make the attribution non collapsible
})
}).extend([mousePositionControl]),
target: 'map',
view: view // Set view
});
/*
* Add a click handler to the map to render the popup.
*/
/*Attribute popup*/
/*Display the Data in a popup box*/
var popup = new ol.Overlay.Popup();
map.addOverlay(popup);
map.on('singleclick', function(evt) {
popup.show(evt.coordinate,popup);
});
你尝试了吗
reqwest({
url: urlIndia,
type: 'json',
}).then(function (data) {
if (data.features.length == 0) {
popup.hide();
return;
}
for (var i = 0; i < data.features.length; i++)
{
在你的点击事件中试试这个
var feature = map.forEachFeatureAtPixel(evt.pixel,
function (feature) {
return feature;
});
if (feature) { what you want to do }
看看这个link可能对你有帮助https://embed.plnkr.co/plunk/hhEAWk