在Google地图上打开标记infowindow的超链接

时间:2012-05-07 15:19:11

标签: javascript google-maps-api-3 google-maps-markers

我有一张地图,旁边有一个侧栏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

3 个答案:

答案 0 :(得分:2)

我建议您更改方法 - 而不是尝试推送click事件,只需直接转到InfoWindow并致电open即可。代码中的其他地方,每个标记都有一个click事件监听器,可以打开InfoWindow;因此,当调用附加到链接的InfoWindow函数时,保持对click个实例的引用并打开它们,就像在标记onlick事件处理程序中一样。

或者,如果您遵循共同的策略并使用单个全局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>";

答案 1 :(得分:0)

我曾做过类似的东西,但是我没有使用元素a而是使用了一个按钮,就像javascript pure在事件中OnClick我把我的事件处理程序运行起来,所以在你的情况下我试图像这样处理这个事件

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

答案 2 :(得分:0)

对于函数,您没有传递任何变量, 这就是为什么它给出了ReferenceError:找不到变量:linkClick

function linkClick(cpid){
   google.maps.event.trigger(gmarkers[cpid], "click");
}

content += <a onClick=linkClick(' + cpid + ')">'+tmpName+"</a><br>";
$("#cplist").html(content);