Google Maps for Rails <img src=âhttp://www.pledgie.com/campaigns/23367.pngâ alt=âEndorseâ /> <img src=âhttps://www.codementor.io/d/images/badge-dark.pngâ alt=âcodementor-buttonâ>¶ â
<img src=âhttps://secure.travis-ci.org/apneadiving/Google-Maps-for-Rails.svg?branch=masterâ alt=âBuild Statusâ /> <img src=âhttps://codeclimate.com/github/apneadiving/Google-Maps-for-Rails.svgâ /> <img src=âhttps://badge.fury.io/rb/gmaps4rails.svgâ alt=âGem Versionâ /> <img src=âhttp://api.coderwall.com/apneadiving/endorsecount.pngâ alt=âEndorseâ />
Gmaps4rails is developed to simply create a Google Map with overlays (markers, infowindowsâŠ). Yet itâs backed on a very flexible codebase which could be prone to accept other map providers.
Use it with any Ruby app (I guess you could simply take the js anywhere if you like).
Here is a quick tutorial on youtube, and my presentation on speaker deck.
For live examples, see here.
Google-Maps-for-Rails-2.0 is an important rewrite to keep the minimum code and features. If youâre migrating from previous versions, you may want to read the rationale about it.
1) Gemfile
gem 'gmaps4rails'
2) HTML
Add a div to bear your map, example:
<div style='width: 800px;'> <div id="map" style='width: 800px; height: 400px;'></div> </div>
3) Javascript Dependencies:
Insert google scripts in your dom:
<script src="//maps.google.com/maps/api/js?key=[your API key]"></script> <script src="//cdn.rawgit.com/mahnunchik/markerclustererplus/master/dist/markerclusterer.min.js"></script> <script src='//cdn.rawgit.com/printercu/google-maps-utility-library-v3-read-only/master/infobox/src/infobox_packed.js' type='text/javascript'></script> <!-- only if you need custom infoboxes -->
Youâll require underscore.js too, see here: underscorejs.org/ (âlo-dash` is compatible too, your choice!).
4) Javascript source code
If you have the asset pipeline, add this:
//= require underscore //= require gmaps/google
If you donât have asset pipeline, youâll need to import the js OR coffee files:
rails g gmaps4rails:copy_js rails g gmaps4rails:copy_coffee
5) Javascript code:
Create your map:
handler = Gmaps.build('Google'); handler.buildMap({ provider: {}, internal: {id: 'map'}}, function(){ markers = handler.addMarkers([ { "lat": 0, "lng": 0, "picture": { "url": "http://people.mozilla.com/~faaborg/files/shiretoko/firefoxIcon/firefox-32.png", "width": 32, "height": 32 }, "infowindow": "hello!" } ]); handler.bounds.extendWith(markers); handler.fitMapToBounds(); });
6) Add options:
Youâre likely going to want to customize your maps by passing an options object. Using the example above, letâs say youâd like to disable the map controls. This and any other options you can find in the Google Maps API reference can be passed into the âprovider` options hash like so:
handler = Gmaps.build('Google'); handler.buildMap({ provider: { disableDefaultUI: true // pass in other Google Maps API options here }, internal: { id: 'map' } }, function(){ markers = handler.addMarkers([ { "lat": 0, "lng": 0, "picture": { "url": "http://people.mozilla.com/~faaborg/files/shiretoko/firefoxIcon/firefox-32.png", "width": 32, "height": 32 }, "infowindow": "hello!" } ]); handler.bounds.extendWith(markers); handler.fitMapToBounds(); } );
You can see other examples of adding âprovider` options in the live examples. Also, check the wiki for further documentation on the possible JavaScript methods.
In your controller:
@users = User.all @hash = Gmaps4rails.build_markers(@users) do |user, marker| marker.lat user.latitude marker.lng user.longitude end
In your view:
<script> markers = handler.addMarkers(<%=raw @hash.to_json %>); </script>
You can change almost everything with a few lines of code. See details here.
-
Markers with Info window, Custom Picture, RichMarkers (make your own markers with custom html)
-
Circles, Polylines, Polygons, Kml
-
Refresh your map on the fly with Javascript (and Ajax)
Feel free to contact us, you have your say.
MIT license.
Author: Benjamin Roth