超链接在谷歌地图上打开标记信息窗口

Hyperlink to open marker infowindow on Google Map

本文关键字:信息 信息窗 窗口 谷歌地图 超链接      更新时间:2023-09-26

我有一张地图,旁边有一个侧边栏div。我正在尝试使地图上的每个标记在侧边栏中都有一个相应的超链接,单击时,会弹出该标记的信息框。

function linkClick(){
   google.maps.event.trigger(gmarkers[cpid], "click");
}
content += '<a href="javascript:linkClick(' + cpid + ')">'+tmpName+"</a><br>";
$("#cplist").html(content);

CPID 是地图上每个点的唯一 ID,该值与标记的其余信息一起存储在数据库中。

在地图上有我的标记,侧边栏中有我的链接,但我不确定如何在两个之间建立联系。我已经创建了"linkClick"函数来尝试实现这一点,但我只是得到错误:

ReferenceError: Can't find variable: linkClick

目前,上述所有代码都处于在地图上绘制标记的循环中。我想我已经包含了足够的细节/代码。

这是我想要实现的一个例子 http://www.geocodezip.com/v3_MW_example_categories.html

我建议改变你的方法 - 与其试图推动click事件,不如直接转到InfoWindow并调用open。在代码中的其他地方,每个打开InfoWindow的标记都有一个click事件侦听器;因此,维护对InfoWindow实例的引用并打开它们,就像在调用附加到链接的 onlick 函数时在标记click事件处理程序中一样。

或者,如果您遵循通用策略并使用单个全局InfoWindow,只需编写一个接受cpid的函数,将必要的内容放在InfoWindow中,设置正确的position,然后调用InfoWindow.open( map )

因此,如果这是您的事件侦听器代码:

google.maps.event.addListener(marker, 'click', function () {
    infowindow.setContent(tmpName+" is "+tmpDist+"km away from you."); 
    infowindow.open(map, this);
});

添加新函数:

function openInfoWindow( cpidAndWhateverElseParam ) {
    infowindow.setContent(tmpName+" is "+tmpDist+"km away from you."); 
    infowindow.open(map, this);
}

并将您的链接代码更改为:

content += '<a href="javascript:openInfoWindow(' + cpidAndWhateverElseParam +
    ')">'+tmpName+"</a><br>";

对于函数,您没有传递任何变量,这就是为什么它给出引用错误:找不到变量:链接单击

function linkClick(cpid){
   google.maps.event.trigger(gmarkers[cpid], "click");
}
content += <a onClick=linkClick(' + cpid + ')">'+tmpName+"</a><br>";
$("#cplist").html(content);

我曾经做过类似的事情,但我没有使用元素a而是使用了一个按钮,并且在我放置事件处理程序OnClick就像 javascript 一样,它可以工作,所以在您的情况下,我尝试像这样处理事件

<a onClick=linkClick(' + cpid + ')">'+tmpName+"</a>