23

我是一个完整的菜鸟,正在构建我的第一个 Rails 应用程序。我使用 youtube 上的 apneadiving 教程成功实施了 Google-maps-for-rails V2:http ://www.youtube.com/watch?v=R0l-7en3dUw&feature=youtu.be

我的问题是,对于我的每张地图,我只显示一个标记,当地图加载时,它会调整为完全缩放。

环顾四周,Gmaps4rails 的早期版本似乎有很多解决方案,但是对于 V2,并通过 javascript 创建地图,我似乎找不到有效的解决方案。

作为参考,我的代码如下:

看法:

    <script type="text/javascript">
      handler = Gmaps.build('Google');
      handler.buildMap({ provider: {}, internal: {id: 'map'}}, function(){
      markers = handler.addMarkers(<%=raw @hash.to_json %>);
      handler.bounds.extendWith(markers);
      handler.fitMapToBounds();
      }); </script> 

控制器:

def show
  @pins = Pin.find(params[:id])
  @hash = Gmaps4rails.build_markers(@pins) do |pin, marker|
    marker.lat pin.latitude
    marker.lng pin.longitude
  end
end

我尝试使用:gmap.setzoom(12) 通过控制台进行更改,正如一些帖子所建议的那样,但没有任何运气。

任何帮助深表感谢

对我有用的答案:将视图更改为:

  <script type="text/javascript">
  handler = Gmaps.build('Google');
  handler.buildMap({ provider: {}, internal: {id: 'map'}}, function(){
  markers = handler.addMarkers(<%=raw @hash.to_json %>);
  handler.bounds.extendWith(markers);
  handler.fitMapToBounds();
  handler.getMap().setZoom(12);
  }); </script> 

谢谢您的帮助!

4

3 回答 3

35

消除:

handler.fitMapToBounds();

用。。。来代替:

handler.getMap().setZoom(yourValue);
于 2013-11-12T21:53:06.133 回答
0

另一种选择是使用 handler.map.centerOn(marker):

      handler = Gmaps.build('Google');
      handler.buildMap({
      provider: {
        draggable: false,
        Zoom: 15
      },
      internal: {
        id: 'map'
      }
    },
    function(){
      marker = handler.addMarker(
        {
          "lat": lat,
          "lng": lng,
          "picture": {
            "url": "https://addons.cdn.mozilla.net/img/uploads/addon_icons/13/13028-64.png",
            "width":  36,
            "height": 36
          },
          "infowindow": "hello!"
        }
      );
      handler.map.centerOn(marker);
    }
  );
于 2014-08-11T19:03:07.267 回答
0
Just Try This,

<script type="text/javascript">
      handler = Gmaps.build('Google');
      handler.buildMap({ provider: { Zoom: 3 }, internal: {id: 'map'}}, function(){
      markers = handler.addMarkers(<%=raw @hash.to_json %>);
      handler.bounds.extendWith(markers);
      handler.fitMapToBounds();
      }); </script> 

或者

handler.getMap().setZoom(yourValue);

它应该工作......

于 2013-11-12T09:29:05.407 回答