在我看来,我应该能够执行以下操作来检测谷歌地图上某一行的点击事件:
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。
我有足够的代码检测标记上的点击工作正常,点击线条会非常好,任何人都可以启发我吗?
答案 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)
谢谢你!
很多GMarker点击示例在addListener()之前都有GEvent,这在我发现的时候不起作用。颠倒顺序使其有效。
您可以通过提醒找到您的真实版本(G_API_VERSION);
使用上面的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