我不知道这是否可行,但它遵循我共享的链接的模式,也许是这样的......
function doToolTip(item) {
return function () {
mTooltip = new Tooltip('<span class="name">' + item.User.Profile.firstname + ' asked:</span> <span class="title">' + item.Post.title + '</span>');
mTooltip.open(this.getMap(), this);
};
}
...这是您的主要代码。我认为“项目需要”在循环范围之外初始化(但我可能错了)
//other code etc...
var item;
for (var i = 0; i < data.length; i++) {
item = data[i];
//other code etc....
google.maps.event.addListener(marker, 'mouseover', doToolTip(item));
//other code etc...
}
好的。我在这里猜测,因为我没有代码的本地副本,但是,看起来你需要在执行绘图功能时更改 z-index ......
//code fragment...
// need to force redraw otherwise it will decide to draw after we show the Tooltip
$(this).css('z-index', 9999);
this.draw();
// show tooltip
关于工具提示的位置,您将不得不尝试使用绘图功能,因为它似乎是根据标记计算位置。最好不要从谷歌地图坐标而是从页面上的实际位置来计算位置 - 我认为罪魁祸首是:
pos = this.getProjection().fromLatLngToDivPixel(this.get('position'));
// top offset
top = pos.y - this.getAnchorHeight() / 2 - this.wdiv.outerHeight() / 2;
// left offset
if (this.getMap().getCenter().lng() > this.get('position').lng()) {
left = pos.x + this.wdiv.outerWidth();
} else {
left = pos.x - this.wdiv.outerWidth();
}
// window position
this.wdiv.css('top', top);
this.wdiv.css('left', left);
如果定位始终处于关闭状态,您可以对顶部和左侧的值进行更正,如果更复杂,则必须更改算法。