2

我想显示一个地图,其中自动为页面上的单个标记显示信息窗口框,就像http://code.google.com/apis/maps/documentation/javascript/examples/map-coordinates.html

我试图编写一个回调函数来实现这一点,但它对我不起作用。

<% content_for :scripts do %>
  <script type="text/javascript" charset="utf-8">
    Gmaps.map.callback = function() {
      if (Gmaps.map.markers.length == 1) {
        var marker = Gmaps.map.markers[0];
        var infowindow = marker.infowindow;
        infowindow.open(Gmaps.map, marker);
      }
    }
  </script>
<% end %>
4

4 回答 4

2

您的代码几乎是完美的。除了代替:

 infowindow.open(Gmaps.map, marker);

你应该有:

 infowindow.open(Gmaps.map.map, marker);

事实上,Gmaps.map 是一个容器,Gmap.map.map 是 google 对象。

我知道这些名字令人困惑。对不起。

PS:请务必将此代码放在您视图中的 gmaps 调用下。

于 2011-10-15T09:28:42.870 回答
1

对我有用的回调函数:

Gmaps.map.callback = function() {
      function openInfoWindow(){
        var m, marker;
        marker = Gmaps.map.markers[2];
        m = marker.serviceObject;
        marker.infowindow.open(Gmaps.map.map, m);
      }
      openInfoWindow();
}
于 2013-10-23T17:51:28.357 回答
1

我正在尝试完成同样的事情,只是从标记列表中打开第一个标记。所以代码几乎是一样的。我已经按照你的建议做了,但它没有显示信息窗口。

<%= gmaps4rails(@json) %>

<% content_for :scripts do %>
  <script type="text/javascript" charset="utf-8">
    Gmaps.map.callback = function() {
        var marker = Gmaps.map.markers[0];
        var infowindow = marker.infowindow;
        infowindow.open(Gmaps.map.map, marker);
    }
  </script>
<% end %>

地图显示找到,但信息窗口未按预期在初始化时弹出!有任何想法吗?

将要

于 2011-11-04T16:32:57.187 回答
0

您将 Javascript 和 Ruby 混合在一起。看看你的 javascript 调试器(你用的对吗?如果没有,Chrome 或 safari 中的网络检查器很棒,Firefox 的 Firebug 也是如此),你会看到它在抱怨。

如果没有看到你的控制器代码,我不能给你太多细节,但看看这篇文章,它可能会为你指明正确的方向。

于 2011-10-15T00:12:49.940 回答