Reputation: 1620
I'm a complete noob, building my first rails app. I successfully implemented Google-maps-for-rails V2, using apneadiving's tutorial on youtube: http://www.youtube.com/watch?v=R0l-7en3dUw&feature=youtu.be
My issue is that for each of my maps, I'm only showing one marker, and when the map loads, it adjusts to be fully zoomed.
Searching around, there seems to be a lot of solutions for earlier versions of Gmaps4rails, but with V2, and creating the map via javascript, I can't seem to find a solution that works.
For reference, my code is below:
View:
<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>
Controller:
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
I tried making changes via the console using: gmap.setzoom(12), as suggested by some post, but haven't had any luck with that .
Any help is much appreciated
Answer that worked for me: change view to:
<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>
Thanks for the help!
Upvotes: 23
Views: 6861
Reputation: 1632
Another option is to use 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);
}
);
Upvotes: 0
Reputation: 211
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>
OR
handler.getMap().setZoom(yourValue);
It Should work.....
Upvotes: 0
Reputation: 115541
remove:
handler.fitMapToBounds();
Replace with:
handler.getMap().setZoom(yourValue);
Upvotes: 35