gpt4 book ai didi

javascript - 在 HERE map 中将鼠标悬停在标记上时显示内容 Div

转载 作者:搜寻专家 更新时间:2023-11-01 05:22:06 26 4
gpt4 key购买 nike

我是这里 map 的新手,需要在标记悬停时显示一个 div。我已经能够放置带有图标的标记,但现在需要显示带有一些额外信息的 div。 HERE map API 是否提供此功能?任何文档 URL 或一段代码将不胜感激。注意:我正在使用 HERE maps JS API for web。

最佳答案

您可以通过向 map 添加各种事件监听器来创建工具提示效果,以检查鼠标指针是否位于某个对象上。

(function (ctx) {
// ensure CSS is injected
var tooltipStyleNode = ctx.createElement('style'),
css = '#nm_tooltip{' +
' color:white;' +
' background:black;' +
' border: 1px solid grey;' +
' padding-left: 1em; ' +
' padding-right: 1em; ' +
' display: none; ' +
' min-width: 120px; ' +
'}';

tooltipStyleNode.type = 'text/css';
if (tooltipStyleNode.styleSheet) { // IE
tooltipStyleNode.styleSheet.cssText = css;
} else {
tooltipStyleNode.appendChild(ctx.createTextNode(css));
}
if (ctx.body) {
ctx.body.appendChild(tooltipStyleNode);
} else if (ctx.addEventListener) {
ctx.addEventListener('DOMContentLoaded', function () {
ctx.body.appendChild(tooltipStyleNode);
}, false);
} else {
ctx.attachEvent('DOMContentLoaded', function () {
ctx.body.appendChild(tooltipStyleNode);
});
}
})(document);


Object.defineProperty(Tooltip.prototype, 'visible', {
get: function() {
return this._visible;
},
set: function(visible) {
this._visible = visible;
this.tooltip.style.display = visible ? 'block' : 'none';
}
});


function Tooltip(map) {
var that = this;
that.map = map;
that.tooltip = document.createElement('div');
that.tooltip.id = 'nm_tooltip';
that.tooltip.style.position = 'absolute';
obj = null,
showTooltip = function () {
var point = that.map.geoToScreen(obj.getPosition()),
left = point.x - (that.tooltip.offsetWidth / 2),
top = point.y + 1; // Slight offset to avoid flicker.
that.tooltip.style.left = left + 'px';
that.tooltip.style.top = top + 'px';
that.visible = true;
that.tooltip.innerHTML = obj.title;
};


map.getElement().appendChild(that.tooltip);
map.addEventListener('pointermove', function (evt) {
obj = that.map.getObjectAt(evt.currentPointer.viewportX,
evt.currentPointer.viewportY);
if(obj && obj.title){
showTooltip();
} else {
that.visible = false;
}
});

map.addEventListener('tap', function (evt){
that.tooltip.visible = false;
});
map.addEventListener('drag', function (evt){
if (that.visible) {
showTooltip();
}
});
};

这是通过传递 map 对象来初始化的,如下所示:

function addTooltipControlToMap(map) {
tooltip = new Tooltip(map);
}

编写的代码正在寻找要添加到 map 对象的 .title 属性 - 如果愿意,可以将其更新为使用 .getData()。工具提示可以如下所示初始化,采用文本或 html:

function addMarkersWithTooltips(map) {

// Simple Marker with tooltip
var brandenburgerTorMarker = new H.map.Marker(
{lat:52.516237, lng: 13.35}),
fernsehturmMarker = new H.map.Marker(
{lat:52.520816, lng:13.409417});

brandenburgerTorMarker.title = 'Brandenburger Tor';

// Marker with HTML Tooltip
fernsehturmMarker.title ='<div>' +
'<h2>Tooltip with HTML content<\/h2>' +
'<img width=\'120\' height=90 src=' +
'\'http://upload.wikimedia.org/wikipedia/commons/' +
'8/84/Berlin-fernsehturm.JPG\' ' +
'alt=\'\'/><br/><b>Fernsehturm, Berlin<\/b>' +
'<\/div>';

// Add the markers onto the map
map.addObjects([brandenburgerTorMarker, fernsehturmMarker]);
}

关于javascript - 在 HERE map 中将鼠标悬停在标记上时显示内容 Div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31401059/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com