如何在Google地图PolyLine叠加层上检测点击事件?

时间:2009-04-06 10:04:43

标签: javascript google-maps

在我看来,我应该能够执行以下操作来检测谷歌地图上某一行的点击事件:

var line = new GPolyline( ... );
map.addOverlay(line);
GEvent.addListener(line, "click", function(latlng){ alert("clicked"); });

api reference表示这是在2007年发布的2.88版本(!?)中提供的,所以我假设这是我正在使用的,但我不知道如何确认。

我还尝试明确设置{clickable:true}选项(它应该是默认选项。)我已经在FireFox 3和Opera 9.6中测试过,所以怀疑它是否与浏览器有关。我也在页面上使用jQuery。

我有足够的代码检测标记上的点击工作正常,点击线条会非常好,任何人都可以启发我吗?

5 个答案:

答案 0 :(得分:6)

更新:在API的第3版中,您希望使用google.maps.event.addListener(object, event, function);

e.g。

google.maps.event.addListener(polyline, 'click', function() {
    alert('you clicked polyline');
    });

有关详细信息,请参阅events api

答案 1 :(得分:2)

我刚做了一个快速测试,以下代码在我的测试页面上运行:

var polyline = new GPolyline([
  new GLatLng(37.4419, -122.1419),
  new GLatLng(37.4519, -122.1519)
], "#ff0000", 10);
map.addOverlay(polyline);

GEvent.addListener(polyline, 'click', function() {
    alert('you clicked polyline');
});

告诉您有哪些版本的谷歌地图的方法是查看您拥有的谷歌地图src网址的v =参数

http://maps.google.com/maps?file=api&v=2&key=MY_API_KEY

在这种情况下,我有“v = 2”,这意味着我正在使用最新的稳定2版本,它支持可点击的折线(截至今日2.101是最新版本)。 “v = 2.x”表示您正在使用边缘版本。任何“v = 2.5”,其中句点(。)之后的任何内容都是一个数字,指的是一个特定的版本

答案 2 :(得分:1)

谢谢你!

  1. 很多GMarker点击示例在addListener()之前都有GEvent,这在我发现的时候不起作用。颠倒顺序使其有效。

  2. 您可以通过提醒找到您的真实版本(G_API_VERSION);

  3. 使用上面的stnadard src url,我的是:// G_API_VERSION == 208a

    再次感谢!

答案 3 :(得分:0)

可以通过向其添加点击事件来使GPolylines可点击,就像使用其他对象一样(代码来自上一个答案):

var polyline = new GPolyline([
  new GLatLng(37.4419, -122.1419),
  new GLatLng(37.4519, -122.1519)
], "#ff0000", 10);
map.addOverlay(polyline);

GEvent.addListener(polyline, 'click', function() {
    alert('you clicked polyline');
});

但是,您还应该知道,在引发GPolyline事件之后,会引发地图本身在同一位置的单击事件。此外,由于事件参数未正确传递到地图点击事件,因此在此特定事件中存在一个错误(截至2010年4月)。这是谷歌的一个已知错误,他们正在努力修复它。

答案 4 :(得分:0)

请注意,似乎无法在折线上的符号中包含点击事件。它们也不会继承附加到 Polyline 本身的点击事件。更多信息请访问:Google Maps: clickable polyline icon