【问题标题】:How do I detect a click event on a google maps PolyLine overlay?如何检测谷歌地图折线叠加层上的点击事件?
【发布时间】:2009-04-06 10:04:43
【问题描述】:

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

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。

我有很多代码可以检测标记上的点击效果很好,点击线条会非常好,有人能启发我吗?

【问题讨论】:

    标签: javascript google-maps


    【解决方案1】:

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

    例如

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

    更多详情,请查看events api

    【讨论】:

      【解决方案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');
      });
      

      判断您拥有的 google maps 版本的方法是查看您拥有的 google maps src url 的 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”都是指特定版本

      【讨论】:

      • 好的,感谢您提供有关版本的信息,但我仍然不明白您应该如何知道“最新稳定版本”是什么... A .version 或 .getVersion () 在 GMap2 对象上不会误入歧途。
      • 不知道为什么,但是今天当我在 Mozilla 中进行测试时,它可以正常工作(新的测试代码,所以某处肯定存在细微差别......),但在 Opera 中没有运气。为您的帮助干杯。
      • 这是我找到的最接近的地方,您可以在这里找出 v=2 和 v=2.x 等于 groups.google.com/group/Google-Maps-API/web/…
      【解决方案3】:

      谢谢!

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

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

      使用上面的标准 src url,我的是:// G_API_VERSION == 208a

      再次感谢!

      【讨论】:

        【解决方案4】:

        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 月),因为事件参数未正确传递给地图点击事件。这是 Google 的一个已知错误,他们正在努力修复它。

        【讨论】:

          【解决方案5】:

          请注意,在折线上的符号中似乎不可能有点击事件。它们也不会继承附加到 Polyline 本身的点击事件。更多信息在这里:Google Maps: clickable polyline icon

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-07-02
            • 2016-03-05
            • 1970-01-01
            • 2016-05-22
            • 1970-01-01
            • 2018-05-01
            • 2013-04-04
            • 2013-07-03
            相关资源
            最近更新 更多