如果我在 HERE 地图中单击不同的标记,如何删除以前的信息气泡?
How to remove previous infobubble, if I click different marker in HERE Map?
下面是我添加信息气泡的代码。我想在点击(点击)不同的标记后删除当前的信息气泡。
function addInfoBubble(map)
{
var group = new H.map.Group();
map.addObject(group);
// add 'tap' event listener, that opens info bubble, to the group
group.addEventListener('tap', function(evt) {
// event target is the marker itself, group is a parent event target
// for all objects that it contains
var bubble = new H.ui.InfoBubble(evt.target.getPosition(), {
// read custom data
content: evt.target.getData()
});
// show info bubble
ui.addBubble(bubble);
}, false);
}
如果我点击不同的标记,我应该把代码行 ui.removeBubble(bubble)
放在哪里?
您可以在添加新信息气泡之前从 ui 中删除所有信息气泡。如果您不介意删除所有当前显示的气泡,那么这样的事情应该可行:
ui.getBubbles().forEach(bub => ui.removeBubble(bub));
将其合并到您的代码中:
function addInfoBubble(map) {
var group = new H.map.Group();
map.addObject(group);
// add 'tap' event listener, that opens info bubble, to the group
group.addEventListener('tap', function(evt) {
// event target is the marker itself, group is a parent event target
// for all objects that it contains
var bubble = new H.ui.InfoBubble(evt.target.getPosition(), {
// read custom data
content: evt.target.getData()
});
//remove infobubbles
ui.getBubbles().forEach(bub => ui.removeBubble(bub));
// show info bubble
ui.addBubble(bubble);
}, false);
}
以下是您可以执行的更多in-depth摘要:
删除最后创建的信息气泡:
ui.removeBubble(bubbles[bubbles.length - 1])
关闭创建的第一个信息气泡:
bubbles[bubbles.length - 1].close()
删除创建的第一个信息气泡:
ui.removeBubble(bubbles[0])
关闭所有气泡:
bubbles.forEach((bubble) => {
bubble.close()
});
消除所有气泡
while(bubbles.length > 0) {
this.ui.removeBubble(bubbles[0])
}
点击信息气泡 Demo,您可以尝试一下。
下面是我添加信息气泡的代码。我想在点击(点击)不同的标记后删除当前的信息气泡。
function addInfoBubble(map)
{
var group = new H.map.Group();
map.addObject(group);
// add 'tap' event listener, that opens info bubble, to the group
group.addEventListener('tap', function(evt) {
// event target is the marker itself, group is a parent event target
// for all objects that it contains
var bubble = new H.ui.InfoBubble(evt.target.getPosition(), {
// read custom data
content: evt.target.getData()
});
// show info bubble
ui.addBubble(bubble);
}, false);
}
如果我点击不同的标记,我应该把代码行 ui.removeBubble(bubble)
放在哪里?
您可以在添加新信息气泡之前从 ui 中删除所有信息气泡。如果您不介意删除所有当前显示的气泡,那么这样的事情应该可行:
ui.getBubbles().forEach(bub => ui.removeBubble(bub));
将其合并到您的代码中:
function addInfoBubble(map) {
var group = new H.map.Group();
map.addObject(group);
// add 'tap' event listener, that opens info bubble, to the group
group.addEventListener('tap', function(evt) {
// event target is the marker itself, group is a parent event target
// for all objects that it contains
var bubble = new H.ui.InfoBubble(evt.target.getPosition(), {
// read custom data
content: evt.target.getData()
});
//remove infobubbles
ui.getBubbles().forEach(bub => ui.removeBubble(bub));
// show info bubble
ui.addBubble(bubble);
}, false);
}
以下是您可以执行的更多in-depth摘要:
删除最后创建的信息气泡:
ui.removeBubble(bubbles[bubbles.length - 1])
关闭创建的第一个信息气泡:
bubbles[bubbles.length - 1].close()
删除创建的第一个信息气泡:
ui.removeBubble(bubbles[0])
关闭所有气泡:
bubbles.forEach((bubble) => {
bubble.close()
});
消除所有气泡
while(bubbles.length > 0) {
this.ui.removeBubble(bubbles[0])
}
点击信息气泡 Demo,您可以尝试一下。