0

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

4

3 回答 3

2

我建议改变你的方法 - 而不是试图推动click事件,直接去InfoWindowand call 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>";
于 2012-05-07T16:26:42.357 回答
0

对于函数,您没有传递任何变量,这就是它给出 ReferenceError: Can't find variable: linkClick 的原因

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

content += <a onClick=linkClick(' + cpid + ')">'+tmpName+"</a><br>";
$("#cplist").html(content);
于 2012-05-07T15:34:39.733 回答
0

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

<a onClick=linkClick(' + cpid + ')">'+tmpName+"</a>
于 2012-05-07T15:30:03.517 回答