Gmaps4Rails:当只有一个标记可用时设置缩放和平移位置。

时间:2012-05-22 12:49:08

标签: ruby-on-rails gmaps4rails

之前我按照another answer中的说明操作,以便在地图上只有一个点时自动打开信息窗口。我有这个工作,但由于地图在手动打开infowindow时没有重新进入(就像点击标记显示信息窗口时那样),因此信息窗口在顶部略微被切断。我的观点只使用了基本的:

gmaps(:map_options => { :auto_adjust => true },
      :markers => { :data => @json, :options => {:do_clustering => true} })

我认为以下JavaScript:

<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.map, marker.serviceObject);
    }
  }
</script>

我想弄清楚的是将缩放级别设置为14以及重新标记标记的最佳方法,以便整个信息窗口显示在屏幕上并且不会在顶部切断

我也看过this question似乎有类似问题,但不包括重新定位。我也可以执行Gmaps.map.map.setZoom(14);在控制台中,让它执行以及Gmaps.map.map.panBy(0,-80);但他们似乎不会在回调中执行。另外,我不确定panBy是否是解决问题的最有效方法。

使用: gmaps4rails(1.4.8)和Rails(3.2.3)

任何人有任何想法或想法?

谢谢!

3 个答案:

答案 0 :(得分:1)

正如我们最后总结的那样,当你有一个标记时,你应该使用专用的助手选项。

由于谷歌地图异步加载。

答案 1 :(得分:0)

可能因为Gmaps.map.map被弃用而不赞成Gmaps.map.serviceObject(请参阅https://github.com/apneadiving/Google-Maps-for-Rails/wiki/Javascript-goodies

答案 2 :(得分:0)

我的申请中遇到了类似的问题,但我做了以下事情来解决。

试试吧

1)将map_option“auto_adjust”更改为false,如下所示

gmaps(:map_options =&gt; {:auto_adjust =&gt; false},       :markers =&gt; {:data =&gt; @json,:options =&gt; {:do_clustering =&gt;是的}})

2)现在在回调函数中调用map.setZoom(你的值),然后地图将被缩放