如何挂接到 HERE 地图 Javascript API 中的 "close infobubble" 事件
How to hook into the "close infobubble" event in HERE maps Javascript API
我可以使用 HERE 地图创建信息气泡 Javascript API - 例如来自他们的 documentation:
function addInfoBubble(map) {
map.set('center', new nokia.maps.geo.Coordinate(53.430, -2.961));
map.setZoomLevel(7);
var infoBubbles = new nokia.maps.map.component.InfoBubbles(),
TOUCH = nokia.maps.dom.Page.browser.touch,
CLICK = TOUCH ? 'tap' : 'click',
container = new nokia.maps.map.Container();
container.addListener(CLICK, function (evt) {
infoBubbles.openBubble(evt.target.html, evt.target.coordinate);
}, false);
map.components.add(infoBubbles);
map.objects.add(container);
addMarkerToContainer(container, [53.439, -2.221],
'<div><a href=\'http://www.mcfc.co.uk\' >Manchester City</a>' +
'</div><div >City of Manchester Stadium<br>Capacity: 48,000</div>');
addMarkerToContainer(container, [53.430, -2.961],
'<div ><a href=\'http://www.liverpoolfc.tv\' >Liverpool</a>' +
'</div><div >Anfield<br>Capacity: 45,362</div>');
}
function addMarkerToContainer(container, coordinate, html) {
var marker = new nokia.maps.map.StandardMarker(
coordinate,
{html: html}
);
container.objects.add(marker);
}
我想挂钩信息气泡的关闭事件。我意识到我可以使用 jQuery 找到包含关闭按钮的范围(检查标记,我相信它有 class nm_bubble_control_close
)并在单击时执行某些操作。但是我认为会有一个我可以使用的内置事件。
有谁知道当信息气泡关闭时是否会触发内置事件?我在文档中找不到任何内容。
据我所知,没有内置事件,也没有相关的 属性 可以观察到。
可能的解决方法:
使用自定义函数覆盖内置 close
方法:
container.addListener(CLICK, function (evt) {
var b = infoBubbles.openBubble(evt.target.html, evt.target.coordinate),
c = b.close;
b.close = function(){
//do what you want to
alert('bubble will be closed');
//execute the original close-method
c.apply(b)
}
}, false);
InfoBubbles 组件有一个 属性 "openBubbleHandles"。这是一个 OList,您可以观察它何时打开(即添加到列表)或关闭(从列表中删除)气泡。
对于当前的 HERE Javascript API 版本 (3.x),可以在这里找到有效的解决方案:
我可以使用 HERE 地图创建信息气泡 Javascript API - 例如来自他们的 documentation:
function addInfoBubble(map) {
map.set('center', new nokia.maps.geo.Coordinate(53.430, -2.961));
map.setZoomLevel(7);
var infoBubbles = new nokia.maps.map.component.InfoBubbles(),
TOUCH = nokia.maps.dom.Page.browser.touch,
CLICK = TOUCH ? 'tap' : 'click',
container = new nokia.maps.map.Container();
container.addListener(CLICK, function (evt) {
infoBubbles.openBubble(evt.target.html, evt.target.coordinate);
}, false);
map.components.add(infoBubbles);
map.objects.add(container);
addMarkerToContainer(container, [53.439, -2.221],
'<div><a href=\'http://www.mcfc.co.uk\' >Manchester City</a>' +
'</div><div >City of Manchester Stadium<br>Capacity: 48,000</div>');
addMarkerToContainer(container, [53.430, -2.961],
'<div ><a href=\'http://www.liverpoolfc.tv\' >Liverpool</a>' +
'</div><div >Anfield<br>Capacity: 45,362</div>');
}
function addMarkerToContainer(container, coordinate, html) {
var marker = new nokia.maps.map.StandardMarker(
coordinate,
{html: html}
);
container.objects.add(marker);
}
我想挂钩信息气泡的关闭事件。我意识到我可以使用 jQuery 找到包含关闭按钮的范围(检查标记,我相信它有 class nm_bubble_control_close
)并在单击时执行某些操作。但是我认为会有一个我可以使用的内置事件。
有谁知道当信息气泡关闭时是否会触发内置事件?我在文档中找不到任何内容。
据我所知,没有内置事件,也没有相关的 属性 可以观察到。
可能的解决方法:
使用自定义函数覆盖内置 close
方法:
container.addListener(CLICK, function (evt) {
var b = infoBubbles.openBubble(evt.target.html, evt.target.coordinate),
c = b.close;
b.close = function(){
//do what you want to
alert('bubble will be closed');
//execute the original close-method
c.apply(b)
}
}, false);
InfoBubbles 组件有一个 属性 "openBubbleHandles"。这是一个 OList,您可以观察它何时打开(即添加到列表)或关闭(从列表中删除)气泡。
对于当前的 HERE Javascript API 版本 (3.x),可以在这里找到有效的解决方案: