【问题标题】:Adding an event listener to the markers using gmaps4rails使用 gmaps4rails 向标记添加事件侦听器
【发布时间】:2011-05-17 19:22:29
【问题描述】:

我正在开发一个使用 gmaps4rails (https://github.com/apneadiving/Google-Maps-for-Rails) 的应用程序。我想向标记添加一个事件侦听器,以便它在地图旁边创建一个可视化(以及在地图上显示一个信息窗口)。是否可以使用 gmaps4rails 为每个标记添加事件侦听器?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 google-maps gmaps4rails


    【解决方案1】:

    当然可以。

    您应该在 gmaps4rails_callback javascript 函数中编写代码,以确保在所有设置完成后执行它。

    然后循环markers js变量:Gmaps4Rails.markers

    这个数组中每个标记的属性是:

    • 经度

    • 纬度

    • 包含 google 标记的 google_object

    也就是说你可以为所欲为。

    作为旁注,地图也可以通过Gmaps4Rails.map 获得。

    一般来说,阅读gmaps4rails.js 文件,它有据可查(我希望!)。

    编辑:

    您在 cmets 中解释的问题很奇怪,当我使用时它对我来说非常有效:

    google.maps.event.addListener(Gmaps4Rails.markers[0].google_object, 'click', function(object){ alert("hello"); });
    

    我想你应该尝试使用更传统的 for 循环,例如:

    <script type="text/javascript"> 
    function gmaps4rails_callback() { 
      function say_yo(arg) { return function(){alert('yo '+ arg + '!' );};};
        for (var i = 0; i <  Gmaps4Rails.markers.length; ++i) {
          google.maps.event.addListener(Gmaps4Rails.markers[i].google_object, 'click', say_yo(i));
        }
    }
    </script>
    

    【讨论】:

    • 我试过 但是标记从来没有出现在地图上......我试图把这段代码放在html脚本的头部/正文的开头/正文的末尾,但所有这些都做了也不行..
    • 阅读我在回答中写的内容,您可以通过以下方式访问谷歌标记:m.google_object
    • 我用 m.google_object 替换了 m:现在标记显示在地图上,但似乎没有将侦听器添加到标记中 - 它仍然只显示从模型生成的信息窗口..
    • 抱歉回复晚了,解决方案对我有用。谢谢:)
    猜你喜欢
    • 2010-11-26
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 2020-06-29
    相关资源
    最近更新 更多