Подтвердить что ты не робот

Gmaps4rails V2 - изменение масштаба по умолчанию

Я полный noob, создаю свое первое приложение для рельсов. Я успешно реализовал Google-maps-for-rails V2, используя учебник apneadiving на youtube: 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> 

Спасибо за помощь!

4b9b3361

Ответ 1

удалить:

handler.fitMapToBounds();

Заменить на:

handler.getMap().setZoom(yourValue);

Ответ 2

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);

Он должен работать.....

Ответ 3

Другой вариант - использовать 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);
    }
  );