1

以前,我按照另一个答案中的说明让信息窗口在地图上只有一个点时自动打开。我有这个工作,但信息窗口在顶部被略微切断,因为手动打开信息窗口时地图不会重新居中(就像单击标记以显示信息窗口时一样)。我的观点只是使用基本的:

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 以及重新定位标记的最佳方法,以便整个信息窗口显示在屏幕上并且不会在顶部被切断。

我也看过这个问题,他似乎有类似的问题,但不包括重新定位。我也可以执行 Gmaps.map.map.setZoom(14); 在控制台中并让它像 Gmaps.map.map.panBy(0, -80); 一样执行 但它们似乎不是从回调中执行的。另外,我不确定 panBy 是否是解决我的信息窗口被切断问题的最有效方法。

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

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

谢谢!

4

3 回答 3

1

正如我们最后得出的结论,当您只有一个标记时,您应该使用专用的辅助选项。

由于谷歌地图异步加载。

于 2012-05-22T16:43:05.610 回答
0

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

于 2012-09-22T08:32:24.273 回答
0

我在我的应用程序中遇到了类似的问题,但我做了以下解决。

试试看

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

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

2) 现在在回调函数中调用 map.setZoom(your value) 然后地图将被缩放

于 2013-10-26T12:32:35.650 回答