2013-11-12 3 views
23

Я полный noob, создавая первое приложение для рельсов. Я успешно реализовал Google-maps-for-rails V2, используя учебник apneadiving на youtube: http://www.youtube.com/watch?v=R0l-7en3dUw&feature=youtu.beGmaps4rails V2 - изменить масштаб по умолчанию

Моя проблема в том, что для каждой из моих карт я показываю только один маркер, и когда карта загружается, она настраивается на полностью масштабироваться.

Поиск вокруг, кажется, существует множество решений для более ранних версий 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> 

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

+1

если вы 'handler.fitMapToBounds();' зум автоматически подстраиваться – apneadiving

+0

мне нужен как 'fitMapToBounds();' и 'setZoom (val)', чтобы он работал только с одним маркером. – RajeshM

ответ

36

удалить:

handler.fitMapToBounds(); 

Заменить:

handler.getMap().setZoom(yourValue); 
+11

Спасибо! В итоге мне нужно было: handler.fitMapToBounds(); handler.getMap(). SetZoom (12); В противном случае карта не была ориентирована на нужное место. Цените помощь. – dmt2989

+0

@apneadiving - Я хотел бы ответить на этот вопрос/ответ. Есть ли способ установить минимальное/максимальное масштабирование для параметров карты по умолчанию без необходимости редактировать исходный код? – Dudo

+0

@Mallanaga вы можете добавить свой собственный строитель, чтобы вы не меняли источник, его объясняли в wiki – apneadiving

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

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

+0

Спасибо за ответ. К сожалению, это не решило. Все еще возвращается к максимальному масштабированию. Любые другие предложения? – dmt2989

0

Другой вариант заключается в использовании handler.map.centerOn (маркер):

 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); 
    } 
); 
Смежные вопросы