gmaps4rails 1.5.8 → 2.0.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (146) hide show
  1. data/.gitignore +12 -0
  2. data/.travis.yml +9 -0
  3. data/Gemfile +7 -0
  4. data/Gemfile.lock +149 -0
  5. data/Guardfile.old +24 -0
  6. data/MIT-LICENSE +20 -0
  7. data/README.rdoc +129 -0
  8. data/Rakefile +4 -0
  9. data/app/views/gmaps4rails/_gmaps4rails.html.erb +20 -0
  10. data/gmaps4rails.gemspec +38 -0
  11. data/lib/generators/gmaps4rails/install_generator.rb +43 -0
  12. data/lib/generators/templates/README +2 -0
  13. data/lib/gmaps4rails.rb +26 -0
  14. data/lib/gmaps4rails/acts_as_gmappable.rb +54 -0
  15. data/lib/gmaps4rails/api_wrappers/base_net_methods.rb +40 -0
  16. data/lib/gmaps4rails/api_wrappers/direction.rb +87 -0
  17. data/lib/gmaps4rails/api_wrappers/geocoder.rb +54 -0
  18. data/lib/gmaps4rails/api_wrappers/places.rb +74 -0
  19. data/lib/gmaps4rails/base.rb +126 -0
  20. data/lib/gmaps4rails/extensions/enumerable.rb +14 -0
  21. data/lib/gmaps4rails/extensions/hash.rb +9 -0
  22. data/lib/gmaps4rails/helper/gmaps4rails_helper.rb +33 -0
  23. data/lib/gmaps4rails/js_builder.rb +154 -0
  24. data/lib/gmaps4rails/json_builder.rb +140 -0
  25. data/lib/gmaps4rails/model_handler.rb +101 -0
  26. data/lib/gmaps4rails/version.rb +3 -0
  27. data/lib/gmaps4rails/view_helper.rb +172 -0
  28. data/lib/tasks/jasmine.rake +8 -0
  29. data/public/javascripts/gmaps4rails/all.js +2144 -0
  30. data/public/javascripts/gmaps4rails/base.js +792 -0
  31. data/public/javascripts/gmaps4rails/google.js +556 -0
  32. data/public/javascripts/gmaps4rails/openlayers.js +377 -0
  33. data/public/stylesheets/gmaps4rails.css +24 -0
  34. data/spec/dummy/.gitignore +3 -0
  35. data/spec/dummy/.rspec +1 -0
  36. data/spec/dummy/README.rdoc +261 -0
  37. data/spec/dummy/Rakefile +7 -0
  38. data/spec/dummy/app/assets/javascripts/application.js +18 -0
  39. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  40. data/spec/dummy/app/assets/stylesheets/gmaps4rails.css +24 -0
  41. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  42. data/spec/dummy/app/controllers/users_controller.rb +105 -0
  43. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  44. data/spec/dummy/app/mailers/.gitkeep +0 -0
  45. data/spec/dummy/app/models/.gitkeep +0 -0
  46. data/spec/dummy/app/models/place.rb +16 -0
  47. data/spec/dummy/app/models/user.rb +12 -0
  48. data/spec/dummy/app/views/layouts/application.html.erb +17 -0
  49. data/spec/dummy/app/views/users/_form.html.erb +37 -0
  50. data/spec/dummy/app/views/users/edit.html.erb +6 -0
  51. data/spec/dummy/app/views/users/index.html.erb +268 -0
  52. data/spec/dummy/app/views/users/new.html.erb +5 -0
  53. data/spec/dummy/app/views/users/show.html.erb +30 -0
  54. data/spec/dummy/config.ru +4 -0
  55. data/spec/dummy/config/application.rb +62 -0
  56. data/spec/dummy/config/boot.rb +10 -0
  57. data/spec/dummy/config/database.yml +25 -0
  58. data/spec/dummy/config/environment.rb +5 -0
  59. data/spec/dummy/config/environments/development.rb +37 -0
  60. data/spec/dummy/config/environments/production.rb +67 -0
  61. data/spec/dummy/config/environments/test.rb +37 -0
  62. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  63. data/spec/dummy/config/initializers/gmaps4rails.rb +1 -0
  64. data/spec/dummy/config/initializers/inflections.rb +15 -0
  65. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  66. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  67. data/spec/dummy/config/initializers/session_store.rb +8 -0
  68. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  69. data/spec/dummy/config/locales/en.yml +5 -0
  70. data/spec/dummy/config/routes.rb +60 -0
  71. data/spec/dummy/db/migrate/20120408170155_create_users.rb +16 -0
  72. data/spec/dummy/db/schema.rb +29 -0
  73. data/spec/dummy/lib/assets/.gitkeep +0 -0
  74. data/spec/dummy/log/.gitkeep +0 -0
  75. data/spec/dummy/public/404.html +26 -0
  76. data/spec/dummy/public/422.html +26 -0
  77. data/spec/dummy/public/500.html +25 -0
  78. data/spec/dummy/public/favicon.ico +0 -0
  79. data/spec/dummy/public/javascripts/Player.js +22 -0
  80. data/spec/dummy/public/javascripts/Song.js +7 -0
  81. data/spec/dummy/public/logo.png +0 -0
  82. data/spec/dummy/script/rails +6 -0
  83. data/spec/factories/place_factory.rb +16 -0
  84. data/spec/factories/user_factory.rb +23 -0
  85. data/spec/fixtures/google_direction_valid.json +65 -0
  86. data/spec/fixtures/google_geocoding_toulon_france.json +58 -0
  87. data/spec/fixtures/google_places_valid.json +45 -0
  88. data/spec/fixtures/google_wrong_geocoding.json +4 -0
  89. data/spec/launchers/all_but_requests.rb +0 -0
  90. data/spec/launchers/all_specs.rb +0 -0
  91. data/spec/launchers/requests.rb +0 -0
  92. data/spec/lib/base_spec.rb +59 -0
  93. data/spec/lib/direction_spec.rb +53 -0
  94. data/spec/lib/geocoder_spec.rb +46 -0
  95. data/spec/lib/js_builder_spec.rb +134 -0
  96. data/spec/lib/json_builder_spec.rb +232 -0
  97. data/spec/lib/places_spec.rb +25 -0
  98. data/spec/models/place_spec.rb +39 -0
  99. data/spec/models/user_spec.rb +187 -0
  100. data/spec/spec_helper.rb +38 -0
  101. data/spec/support/geocoding.rb +40 -0
  102. data/spec/support/matchers.rb +73 -0
  103. data/todo +0 -0
  104. data/vendor/assets/javascripts/gmaps4rails/all.js +1 -0
  105. data/vendor/assets/javascripts/gmaps4rails/base.coffee +1 -0
  106. data/vendor/assets/javascripts/gmaps4rails/base/common.coffee +43 -0
  107. data/vendor/assets/javascripts/gmaps4rails/base/configuration.coffee +7 -0
  108. data/vendor/assets/javascripts/gmaps4rails/base/gmaps.coffee +13 -0
  109. data/vendor/assets/javascripts/gmaps4rails/base/interfaces/basic_interface.coffee +15 -0
  110. data/vendor/assets/javascripts/gmaps4rails/base/interfaces/controller_interface.coffee +15 -0
  111. data/vendor/assets/javascripts/gmaps4rails/base/interfaces/map_interface.coffee +27 -0
  112. data/vendor/assets/javascripts/gmaps4rails/base/interfaces/marker_interface.coffee +15 -0
  113. data/vendor/assets/javascripts/gmaps4rails/base/main.coffee +124 -0
  114. data/vendor/assets/javascripts/gmaps4rails/base/main_controller_extensions/circle_controller.coffee +29 -0
  115. data/vendor/assets/javascripts/gmaps4rails/base/main_controller_extensions/kml_controller.coffee +5 -0
  116. data/vendor/assets/javascripts/gmaps4rails/base/main_controller_extensions/marker_controller.coffee +76 -0
  117. data/vendor/assets/javascripts/gmaps4rails/base/main_controller_extensions/polygon_controller.coffee +29 -0
  118. data/vendor/assets/javascripts/gmaps4rails/base/main_controller_extensions/polyline_controller.coffee +29 -0
  119. data/vendor/assets/javascripts/gmaps4rails/base/objects/circle.coffee +12 -0
  120. data/vendor/assets/javascripts/gmaps4rails/base/objects/kml.coffee +8 -0
  121. data/vendor/assets/javascripts/gmaps4rails/base/objects/map.coffee +62 -0
  122. data/vendor/assets/javascripts/gmaps4rails/base/objects/marker.coffee +24 -0
  123. data/vendor/assets/javascripts/gmaps4rails/base/objects/polygon.coffee +11 -0
  124. data/vendor/assets/javascripts/gmaps4rails/base/objects/polyline.coffee +11 -0
  125. data/vendor/assets/javascripts/gmaps4rails/bing.coffee +1 -0
  126. data/vendor/assets/javascripts/gmaps4rails/bing/main.coffee +29 -0
  127. data/vendor/assets/javascripts/gmaps4rails/bing/objects/map.coffee +63 -0
  128. data/vendor/assets/javascripts/gmaps4rails/bing/objects/marker.coffee +78 -0
  129. data/vendor/assets/javascripts/gmaps4rails/bing/shared.coffee +20 -0
  130. data/vendor/assets/javascripts/gmaps4rails/google.coffee +1 -0
  131. data/vendor/assets/javascripts/gmaps4rails/google/main.coffee +47 -0
  132. data/vendor/assets/javascripts/gmaps4rails/google/objects/circle.coffee +38 -0
  133. data/vendor/assets/javascripts/gmaps4rails/google/objects/kml.coffee +16 -0
  134. data/vendor/assets/javascripts/gmaps4rails/google/objects/map.coffee +71 -0
  135. data/vendor/assets/javascripts/gmaps4rails/google/objects/marker.coffee +114 -0
  136. data/vendor/assets/javascripts/gmaps4rails/google/objects/polygon.coffee +38 -0
  137. data/vendor/assets/javascripts/gmaps4rails/google/objects/polyline.coffee +49 -0
  138. data/vendor/assets/javascripts/gmaps4rails/google/shared.coffee +27 -0
  139. data/vendor/assets/javascripts/gmaps4rails/openlayers.coffee +1 -0
  140. data/vendor/assets/javascripts/gmaps4rails/openlayers/main.coffee +138 -0
  141. data/vendor/assets/javascripts/gmaps4rails/openlayers/objects/map.coffee +49 -0
  142. data/vendor/assets/javascripts/gmaps4rails/openlayers/objects/marker.coffee +68 -0
  143. data/vendor/assets/javascripts/gmaps4rails/openlayers/objects/polyline.coffee +39 -0
  144. data/vendor/assets/javascripts/gmaps4rails/openlayers/shared.coffee +19 -0
  145. metadata +378 -14
  146. checksums.yaml +0 -7
@@ -0,0 +1,38 @@
1
+ class @Gmaps4Rails.Google.Polygon extends Gmaps4Rails.Common
2
+
3
+ @include Gmaps4Rails.Interfaces.Basic
4
+
5
+ @include Gmaps4Rails.Google.Shared
6
+ @extend Gmaps4Rails.Polygon.Class
7
+ @extend Gmaps4Rails.Configuration
8
+
9
+ constructor : (polygon, controller) ->
10
+ @controller = controller
11
+ polygon_coordinates = []
12
+
13
+ #Polygon points are in an Array, that's why looping is necessary
14
+ for point in polygon
15
+ latlng = @createLatLng(point.lat, point.lng)
16
+ polygon_coordinates.push(latlng)
17
+ #first element of an Array could contain specific configuration for this particular polygon. If no config given, use default
18
+ if point == polygon[0]
19
+ strokeColor = point.strokeColor || @controller.polygons_conf.strokeColor
20
+ strokeOpacity = point.strokeOpacity || @controller.polygons_conf.strokeOpacity
21
+ strokeWeight = point.strokeWeight || @controller.polygons_conf.strokeWeight
22
+ fillColor = point.fillColor || @controller.polygons_conf.fillColor
23
+ fillOpacity = point.fillOpacity || @controller.polygons_conf.fillOpacity
24
+ clickable = point.clickable || @controller.polygons_conf.clickable
25
+ zIndex = point.zIndex || @controller.polygons_conf.zIndex
26
+
27
+ polyOptions =
28
+ path: polygon_coordinates
29
+ strokeColor: strokeColor
30
+ strokeOpacity: strokeOpacity
31
+ strokeWeight: strokeWeight
32
+ clickable: clickable
33
+ zIndex: zIndex
34
+
35
+ mergedOptions = @mergeObjects controller.polygons_conf.raw, polyOptions
36
+
37
+ @serviceObject = new google.maps.Polygon mergedOptions
38
+ @serviceObject.setMap(controller.getMapObject())
@@ -0,0 +1,49 @@
1
+ class @Gmaps4Rails.Google.Polyline extends Gmaps4Rails.Common
2
+
3
+ @include Gmaps4Rails.Interfaces.Basic
4
+
5
+ @include Gmaps4Rails.Google.Shared
6
+ @extend Gmaps4Rails.Polyline.Class
7
+ @extend Gmaps4Rails.Configuration
8
+
9
+ #creates a single polyline, triggered by create_polylines
10
+ constructor : (polyline, controller) ->
11
+ polyline_coordinates = []
12
+ #2 cases here, either we have a coded array of LatLng or we have an Array of LatLng
13
+ for element in polyline
14
+ #if we have a coded array
15
+ if element.coded_array?
16
+ decoded_array = new google.maps.geometry.encoding.decodePath(element.coded_array)
17
+ #loop through every point in the array
18
+ for point in decoded_array
19
+ polyline_coordinates.push(point)
20
+
21
+ #or we have an array of latlng
22
+ else
23
+ #by convention, a single polyline could be customized in the first array or it uses default values
24
+ if element == polyline[0]
25
+ strokeColor = element.strokeColor || controller.polylines_conf.strokeColor
26
+ strokeOpacity = element.strokeOpacity || controller.polylines_conf.strokeOpacity
27
+ strokeWeight = element.strokeWeight || controller.polylines_conf.strokeWeight
28
+ clickable = element.clickable || controller.polylines_conf.clickable
29
+ zIndex = element.zIndex || controller.polylines_conf.zIndex
30
+ icons = element.icons || controller.polylines_conf.icons
31
+
32
+ #add latlng if positions provided
33
+ if element.lat? && element.lng?
34
+ polyline_coordinates.push @createLatLng(element.lat, element.lng)
35
+
36
+ polyOptions =
37
+ path: polyline_coordinates
38
+ strokeColor: strokeColor
39
+ strokeOpacity: strokeOpacity
40
+ strokeWeight: strokeWeight
41
+ clickable: clickable
42
+ zIndex: zIndex
43
+ icons: icons
44
+
45
+ mergedOptions = @mergeObjects controller.polylines_conf.raw, polyOptions
46
+
47
+ # Construct the polyline
48
+ @serviceObject = new google.maps.Polyline mergedOptions
49
+ @serviceObject.setMap(controller.getMapObject())
@@ -0,0 +1,27 @@
1
+ Gmaps4Rails.Google = {}
2
+
3
+ Gmaps4Rails.Google.Shared =
4
+
5
+ createPoint : (lat, lng) ->
6
+ new google.maps.Point(lat, lng)
7
+
8
+ createSize : (width, height) ->
9
+ new google.maps.Size(width, height)
10
+
11
+ createLatLng : (lat, lng) ->
12
+ new google.maps.LatLng(lat, lng)
13
+
14
+ createLatLngBounds : ->
15
+ new google.maps.LatLngBounds()
16
+
17
+ clear: ()->
18
+ @serviceObject.setMap(null)
19
+
20
+ show: () ->
21
+ @serviceObject.setVisible(true)
22
+
23
+ hide: () ->
24
+ @serviceObject.setVisible(false)
25
+
26
+ isVisible: ->
27
+ @serviceObject.getVisible()
@@ -0,0 +1 @@
1
+ #= require './openlayers/main'
@@ -0,0 +1,138 @@
1
+ #= require './shared'
2
+
3
+ #= require_tree './objects'
4
+
5
+ class @Gmaps4RailsOpenlayers extends Gmaps4Rails.BaseController
6
+
7
+ @include Gmaps4Rails.Openlayers.Shared
8
+
9
+ constructor: ->
10
+ super
11
+
12
+ @markersControl = null
13
+ @markersLayer = null
14
+
15
+ @polylinesLayer = null
16
+
17
+ getModule: ->
18
+ Gmaps4Rails.Openlayers
19
+
20
+ #////////////////////////////////////////////////////
21
+ #/////////////////// Clusterer //////////////////////
22
+ #////////////////////////////////////////////////////
23
+
24
+ createClusterer: (marker_serviceObject_array)->
25
+ style = new OpenLayers.Style @_clustererOptions, @_clustererFunctions
26
+
27
+ strategy = new OpenLayers.Strategy.Cluster
28
+ @_clearMarkersLayer()
29
+
30
+ @clusterLayer = new OpenLayers.Layer.Vector "Clusters",
31
+ strategies: [strategy]
32
+ styleMap: new OpenLayers.StyleMap
33
+ "default": style
34
+ "select":
35
+ fillColor: "#8aeeef"
36
+ strokeColor: "#32a8a9"
37
+
38
+ @getMapObject().addLayer @clusterLayer
39
+ @clusterLayer.addFeatures marker_serviceObject_array
40
+ @clusterLayer
41
+
42
+ clearClusterer: ->
43
+ @getMapObject().removeLayer @markerClusterer if @clusterLayer? and @getMapObject().getLayer(@clusterLayer.id)?
44
+ @clusterLayer = null
45
+
46
+ #overwriting method from base controller since it doesn't fit here
47
+ clearMarkers: ->
48
+ @_clearMarkersLayer()
49
+ @clearClusterer()
50
+ @markers = []
51
+
52
+ #////////////////////////////////////////////////////
53
+ #/////////////// Private methods ////////////////////
54
+ #////////////////////////////////////////////////////
55
+
56
+ _createPolylinesLayer: ->
57
+
58
+ return if @polylinesLayer?
59
+ @polylinesLayer = new OpenLayers.Layer.Vector("Polylines", null)
60
+ @polylinesLayer.events.register("featureselected", @polylinesLayer, @_onFeatureSelect)
61
+ @polylinesLayer.events.register("featureunselected", @polylinesLayer, @_onFeatureUnselect)
62
+ @polylinesControl = new OpenLayers.Control.DrawFeature(@polylinesLayer, OpenLayers.Handler.Path)
63
+ @getMapObject().addLayer(@polylinesLayer)
64
+
65
+ @getMapObject().addControl(@polylinesControl)
66
+
67
+ _createMarkersLayer: ->
68
+ return if @markersLayer?
69
+
70
+ @markersLayer = new OpenLayers.Layer.Vector("Markers", null)
71
+ @getMapObject().addLayer @markersLayer
72
+
73
+ @markersLayer.events.register("featureselected", @markersLayer, @_onFeatureSelect())
74
+ @markersLayer.events.register("featureunselected", @markersLayer, @_onFeatureUnselect())
75
+
76
+ @markersControl = new OpenLayers.Control.SelectFeature @markersLayer
77
+
78
+ @getMapObject().addControl @markersControl
79
+ @markersControl.activate()
80
+
81
+ _clearMarkersLayer: ->
82
+ @getMapObject().removeLayer(@markersLayer) if @markersLayer? and @getMapObject().getLayer(@markersLayer.id)?
83
+ @markersLayer = null
84
+
85
+ _onFeatureSelect: ->
86
+ controller = @
87
+ return (evt) ->
88
+ feature = evt.feature
89
+
90
+ popup = new OpenLayers.Popup.FramedCloud(
91
+ "featurePopup",
92
+ feature.geometry.getBounds().getCenterLonLat(),
93
+ new OpenLayers.Size(300,200),
94
+ feature.infoWindow,
95
+ null,
96
+ true,
97
+ controller._onPopupClose(controller, feature)
98
+ )
99
+ feature.popup = popup
100
+ popup.feature = feature
101
+ controller.getMapObject().addPopup popup
102
+
103
+ _onFeatureUnselect: ->
104
+ controller = @
105
+
106
+ return (evt)->
107
+ feature = evt.feature
108
+
109
+ if feature.popup?
110
+ controller.getMapObject().removePopup feature.popup
111
+ feature.popup.destroy()
112
+ feature.popup = null
113
+
114
+ _onPopupClose: (controller, feature) ->
115
+ return ->
116
+ controller.markersControl.unselect feature
117
+
118
+ _clustererFunctions:
119
+ context:
120
+ width: (feature) ->
121
+ return (feature.cluster) ? 2 : 1
122
+ radius: (feature) ->
123
+ pix = 2
124
+ pix = feature.cluster.length + 10 if feature.cluster
125
+ return pix
126
+ label: (feature) ->
127
+ if feature.cluster
128
+ return feature.cluster.length
129
+ else
130
+ return ""
131
+
132
+ _clustererOptions:
133
+ pointRadius: "${radius}"
134
+ fillColor: "#ffcc66"
135
+ fillOpacity: 0.8
136
+ strokeColor: "#cc6633"
137
+ strokeWidth: "${width}"
138
+ label: "${label}"
@@ -0,0 +1,49 @@
1
+ class @Gmaps4Rails.Openlayers.Map extends Gmaps4Rails.Common
2
+
3
+ @include Gmaps4Rails.Interfaces.Map
4
+
5
+ @include Gmaps4Rails.Map
6
+ @include Gmaps4Rails.Openlayers.Shared
7
+ @include Gmaps4Rails.Configuration
8
+
9
+ CONF:
10
+ disableDefaultUI: false
11
+ disableDoubleClickZoom: false
12
+ type: "ROADMAP" # HYBRID, ROADMAP, SATELLITE, TERRAIN
13
+ mapTypeControl: null
14
+
15
+ constructor:(map_options, controller) ->
16
+ @controller = controller
17
+
18
+ defaultOptions = @setConf()
19
+ @options = @mergeObjects map_options, defaultOptions
20
+
21
+ openlayersOptions =
22
+ center: @createLatLng(@options.center_latitude, @options.center_longitude)
23
+ zoom: @options.zoom
24
+
25
+ mergedOpenlayersOptions = @mergeObjects map_options.raw, openlayersOptions
26
+
27
+ @serviceObject = new OpenLayers.Map(@options.id, mergedOpenlayersOptions)
28
+
29
+ @serviceObject.addLayer(new OpenLayers.Layer.OSM())
30
+
31
+ extendBoundsWithMarker : (marker)->
32
+ @boundsObject.extend(@createLatLng(marker.lat,marker.lng))
33
+
34
+ extendBoundsWithPolyline: (polyline)->
35
+
36
+ extendBoundsWithPolygon: (polygon)->
37
+
38
+ extendBoundsWithCircle: (circle)->
39
+
40
+ extendBound: (bound)->
41
+
42
+ fitBounds: ->
43
+ @serviceObject.zoomToExtent(@boundsObject, true)
44
+
45
+ adaptToBounds: ->
46
+ @fitBounds()
47
+
48
+ centerMapOnUser : (position)->
49
+ @serviceObject.setCenter position
@@ -0,0 +1,68 @@
1
+ class @Gmaps4Rails.Openlayers.Marker extends Gmaps4Rails.Common
2
+
3
+ @include Gmaps4Rails.Interfaces.Marker
4
+
5
+ @include Gmaps4Rails.Openlayers.Shared
6
+ @include Gmaps4Rails.Marker.Instance
7
+ @extend Gmaps4Rails.Marker.Class
8
+ @extend Gmaps4Rails.Configuration
9
+
10
+
11
+ constructor: (args, controller)->
12
+ @controller = controller
13
+
14
+ @controller._createMarkersLayer()
15
+
16
+ @_createMarkerStyle(args)
17
+
18
+ if @_isBasicMarker(args)
19
+ @_styleForBasicMarker(args)
20
+ else
21
+ @_styleForCustomMarker(args)
22
+
23
+ @serviceObject = new OpenLayers.Feature.Vector(
24
+ @createPoint(args.lat, args.lng),
25
+ null,
26
+ @style_mark
27
+ )
28
+ #//changing coordinates so that it actually appears on the map!
29
+ @serviceObject.geometry.transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913"))
30
+ #//adding layer to the map
31
+ @controller.markersLayer.addFeatures([@serviceObject])
32
+
33
+ createInfoWindow : () ->
34
+ @serviceObject.infoWindow = @description if @description?
35
+
36
+ #cheap integration, I admit
37
+ isVisible: ->
38
+ true
39
+
40
+ _isBasicMarker: (args)->
41
+ !args.marker_picture?
42
+
43
+ _createMarkerStyle: (args) ->
44
+ @style_mark = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default'])
45
+ @style_mark.fillOpacity = 1
46
+ @style_mark.graphicTitle = args.marker_title
47
+
48
+ _styleForBasicMarker: (args)->
49
+ @style_mark.graphicHeight = 30
50
+ @style_mark.externalGraphic = "http://openlayers.org/dev/img/marker-blue.png"
51
+
52
+ _styleForCustomMarker: (args)->
53
+ @style_mark.graphicWidth = args.marker_width
54
+ @style_mark.graphicHeight = args.marker_height
55
+ @style_mark.externalGraphic = args.marker_picture
56
+ #//adding anchor if any
57
+ if args.marker_anchor?
58
+ @style_mark.graphicXOffset = args.marker_anchor[0]
59
+ @style_mark.graphicYOffset = args.marker_anchor[1]
60
+ #//adding shadow if any
61
+ if args.shadow_picture?
62
+ @style_mark.backgroundGraphic = args.shadow_picture
63
+ @style_mark.backgroundWidth = args.shadow_width
64
+ @style_mark.backgroundHeight = args.shadow_height
65
+ #//adding shadow's anchor if any
66
+ if args.shadow_anchor?
67
+ @style_mark.backgroundXOffset = args.shadow_anchor[0]
68
+ @style_mark.backgroundYOffset = args.shadow_anchor[1]
@@ -0,0 +1,39 @@
1
+ class @Gmaps4Rails.Openlayers.Polyline extends Gmaps4Rails.Common
2
+
3
+ @include Gmaps4Rails.Interfaces.Basic
4
+
5
+ @include Gmaps4Rails.Openlayers.Shared
6
+ @extend Gmaps4Rails.Polyline.Class
7
+ @extend Gmaps4Rails.Configuration
8
+
9
+ #creates a single polyline, triggered by create_polylines
10
+ constructor : (polyline, controller) ->
11
+ @controller = controller
12
+ @controller._createPolylinesLayer()
13
+
14
+ polyline_coordinates = []
15
+
16
+ for element in polyline
17
+ #by convention, a single polyline could be customized in the first array or it uses default values
18
+ if element == polyline[0]
19
+ strokeColor = element.strokeColor || @controller.polylines_conf.strokeColor
20
+ strokeOpacity = element.strokeOpacity || @controller.polylines_conf.strokeOpacity
21
+ strokeWeight = element.strokeWeight || @controller.polylines_conf.strokeWeight
22
+ clickable = element.clickable || @controller.polylines_conf.clickable
23
+ zIndex = element.zIndex || @controller.polylines_conf.zIndex
24
+
25
+ #add latlng if positions provided
26
+ if element.lat? && element.lng?
27
+ latlng = new OpenLayers.Geometry.Point(element.lng, element.lat)
28
+ polyline_coordinates.push(latlng)
29
+
30
+ line_points = new OpenLayers.Geometry.LineString(polyline_coordinates);
31
+ line_style = { strokeColor: strokeColor, strokeOpacity: strokeOpacity, strokeWidth: strokeWeight };
32
+
33
+ @serviceObject = new OpenLayers.Feature.Vector(line_points, null, line_style);
34
+ @serviceObject.geometry.transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913"))
35
+
36
+ @controller.polylinesLayer.addFeatures([@serviceObject])
37
+
38
+ isVisible: ->
39
+ true
@@ -0,0 +1,19 @@
1
+ Gmaps4Rails.Openlayers = {}
2
+
3
+ Gmaps4Rails.Openlayers.Shared =
4
+
5
+ createPoint:(lat, lng) ->
6
+ new OpenLayers.Geometry.Point(lng, lat)
7
+
8
+ createLatLng: (lat, lng)->
9
+ new OpenLayers.LonLat(lng, lat).transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913")) # transform from WGS 1984 to Spherical Mercator Projection
10
+
11
+ createAnchor: (offset)->
12
+ return null if offset == null
13
+ new OpenLayers.Pixel(offset[0], offset[1])
14
+
15
+ createSize: (width, height)->
16
+ new OpenLayers.Size(width, height)
17
+
18
+ createLatLngBounds: ->
19
+ new OpenLayers.Bounds()
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gmaps4rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.8
4
+ version: 2.0.0.pre
5
+ prerelease: 6
5
6
  platform: ruby
6
7
  authors:
7
8
  - Benjamin Roth
@@ -9,52 +10,415 @@ authors:
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2017-02-02 00:00:00.000000000 Z
13
+ date: 2012-10-21 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
- name: rake
16
+ name: rails
16
17
  requirement: !ruby/object:Gem::Requirement
18
+ none: false
17
19
  requirements:
18
- - - ">="
20
+ - - ~>
21
+ - !ruby/object:Gem::Version
22
+ version: 3.2.1
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ~>
29
+ - !ruby/object:Gem::Version
30
+ version: 3.2.1
31
+ - !ruby/object:Gem::Dependency
32
+ name: sqlite3
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ type: :development
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: mongoid
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '3'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ version: '3'
63
+ - !ruby/object:Gem::Dependency
64
+ name: jquery-rails
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ type: :development
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ - !ruby/object:Gem::Dependency
80
+ name: rspec-rails
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ type: :development
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: database_cleaner
97
+ requirement: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ! '>='
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: coffee-script
113
+ requirement: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ! '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ - !ruby/object:Gem::Dependency
128
+ name: factory_girl_rails
129
+ requirement: !ruby/object:Gem::Requirement
130
+ none: false
131
+ requirements:
132
+ - - ! '>='
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ type: :development
136
+ prerelease: false
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ - !ruby/object:Gem::Dependency
144
+ name: webmock
145
+ requirement: !ruby/object:Gem::Requirement
146
+ none: false
147
+ requirements:
148
+ - - ! '>='
19
149
  - !ruby/object:Gem::Version
20
150
  version: '0'
21
151
  type: :development
22
152
  prerelease: false
23
153
  version_requirements: !ruby/object:Gem::Requirement
154
+ none: false
24
155
  requirements:
25
- - - ">="
156
+ - - ! '>='
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ - !ruby/object:Gem::Dependency
160
+ name: pry
161
+ requirement: !ruby/object:Gem::Requirement
162
+ none: false
163
+ requirements:
164
+ - - ! '>='
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ type: :development
168
+ prerelease: false
169
+ version_requirements: !ruby/object:Gem::Requirement
170
+ none: false
171
+ requirements:
172
+ - - ! '>='
26
173
  - !ruby/object:Gem::Version
27
174
  version: '0'
28
175
  description: Enables easy display of items (taken from a Rails 3 model) on a Google
29
- Maps (JS API V3), OpenLayers, Mapquest and Bing. Geocoding + Directions included.
176
+ Maps (JS API V3), OpenLayers, Mapquest and Bing.
30
177
  email:
31
178
  - apnea.diving.deep@gmail.com
32
179
  - david.ruyer@gmail.com
33
180
  executables: []
34
181
  extensions: []
35
182
  extra_rdoc_files: []
36
- files: []
183
+ files:
184
+ - .gitignore
185
+ - .travis.yml
186
+ - Gemfile
187
+ - Gemfile.lock
188
+ - Guardfile.old
189
+ - MIT-LICENSE
190
+ - README.rdoc
191
+ - Rakefile
192
+ - app/views/gmaps4rails/_gmaps4rails.html.erb
193
+ - gmaps4rails.gemspec
194
+ - lib/generators/gmaps4rails/install_generator.rb
195
+ - lib/generators/templates/README
196
+ - lib/gmaps4rails.rb
197
+ - lib/gmaps4rails/acts_as_gmappable.rb
198
+ - lib/gmaps4rails/api_wrappers/base_net_methods.rb
199
+ - lib/gmaps4rails/api_wrappers/direction.rb
200
+ - lib/gmaps4rails/api_wrappers/geocoder.rb
201
+ - lib/gmaps4rails/api_wrappers/places.rb
202
+ - lib/gmaps4rails/base.rb
203
+ - lib/gmaps4rails/extensions/enumerable.rb
204
+ - lib/gmaps4rails/extensions/hash.rb
205
+ - lib/gmaps4rails/helper/gmaps4rails_helper.rb
206
+ - lib/gmaps4rails/js_builder.rb
207
+ - lib/gmaps4rails/json_builder.rb
208
+ - lib/gmaps4rails/model_handler.rb
209
+ - lib/gmaps4rails/version.rb
210
+ - lib/gmaps4rails/view_helper.rb
211
+ - lib/tasks/jasmine.rake
212
+ - public/javascripts/gmaps4rails/all.js
213
+ - public/javascripts/gmaps4rails/base.js
214
+ - public/javascripts/gmaps4rails/google.js
215
+ - public/javascripts/gmaps4rails/openlayers.js
216
+ - public/stylesheets/gmaps4rails.css
217
+ - spec/dummy/.gitignore
218
+ - spec/dummy/.rspec
219
+ - spec/dummy/README.rdoc
220
+ - spec/dummy/Rakefile
221
+ - spec/dummy/app/assets/javascripts/application.js
222
+ - spec/dummy/app/assets/stylesheets/application.css
223
+ - spec/dummy/app/assets/stylesheets/gmaps4rails.css
224
+ - spec/dummy/app/controllers/application_controller.rb
225
+ - spec/dummy/app/controllers/users_controller.rb
226
+ - spec/dummy/app/helpers/application_helper.rb
227
+ - spec/dummy/app/mailers/.gitkeep
228
+ - spec/dummy/app/models/.gitkeep
229
+ - spec/dummy/app/models/place.rb
230
+ - spec/dummy/app/models/user.rb
231
+ - spec/dummy/app/views/layouts/application.html.erb
232
+ - spec/dummy/app/views/users/_form.html.erb
233
+ - spec/dummy/app/views/users/edit.html.erb
234
+ - spec/dummy/app/views/users/index.html.erb
235
+ - spec/dummy/app/views/users/new.html.erb
236
+ - spec/dummy/app/views/users/show.html.erb
237
+ - spec/dummy/config.ru
238
+ - spec/dummy/config/application.rb
239
+ - spec/dummy/config/boot.rb
240
+ - spec/dummy/config/database.yml
241
+ - spec/dummy/config/environment.rb
242
+ - spec/dummy/config/environments/development.rb
243
+ - spec/dummy/config/environments/production.rb
244
+ - spec/dummy/config/environments/test.rb
245
+ - spec/dummy/config/initializers/backtrace_silencers.rb
246
+ - spec/dummy/config/initializers/gmaps4rails.rb
247
+ - spec/dummy/config/initializers/inflections.rb
248
+ - spec/dummy/config/initializers/mime_types.rb
249
+ - spec/dummy/config/initializers/secret_token.rb
250
+ - spec/dummy/config/initializers/session_store.rb
251
+ - spec/dummy/config/initializers/wrap_parameters.rb
252
+ - spec/dummy/config/locales/en.yml
253
+ - spec/dummy/config/routes.rb
254
+ - spec/dummy/db/migrate/20120408170155_create_users.rb
255
+ - spec/dummy/db/schema.rb
256
+ - spec/dummy/lib/assets/.gitkeep
257
+ - spec/dummy/log/.gitkeep
258
+ - spec/dummy/public/404.html
259
+ - spec/dummy/public/422.html
260
+ - spec/dummy/public/500.html
261
+ - spec/dummy/public/favicon.ico
262
+ - spec/dummy/public/javascripts/Player.js
263
+ - spec/dummy/public/javascripts/Song.js
264
+ - spec/dummy/public/logo.png
265
+ - spec/dummy/script/rails
266
+ - spec/factories/place_factory.rb
267
+ - spec/factories/user_factory.rb
268
+ - spec/fixtures/google_direction_valid.json
269
+ - spec/fixtures/google_geocoding_toulon_france.json
270
+ - spec/fixtures/google_places_valid.json
271
+ - spec/fixtures/google_wrong_geocoding.json
272
+ - spec/launchers/all_but_requests.rb
273
+ - spec/launchers/all_specs.rb
274
+ - spec/launchers/requests.rb
275
+ - spec/lib/base_spec.rb
276
+ - spec/lib/direction_spec.rb
277
+ - spec/lib/geocoder_spec.rb
278
+ - spec/lib/js_builder_spec.rb
279
+ - spec/lib/json_builder_spec.rb
280
+ - spec/lib/places_spec.rb
281
+ - spec/models/place_spec.rb
282
+ - spec/models/user_spec.rb
283
+ - spec/spec_helper.rb
284
+ - spec/support/geocoding.rb
285
+ - spec/support/matchers.rb
286
+ - todo
287
+ - vendor/assets/javascripts/gmaps4rails/all.js
288
+ - vendor/assets/javascripts/gmaps4rails/base.coffee
289
+ - vendor/assets/javascripts/gmaps4rails/base/common.coffee
290
+ - vendor/assets/javascripts/gmaps4rails/base/configuration.coffee
291
+ - vendor/assets/javascripts/gmaps4rails/base/gmaps.coffee
292
+ - vendor/assets/javascripts/gmaps4rails/base/interfaces/basic_interface.coffee
293
+ - vendor/assets/javascripts/gmaps4rails/base/interfaces/controller_interface.coffee
294
+ - vendor/assets/javascripts/gmaps4rails/base/interfaces/map_interface.coffee
295
+ - vendor/assets/javascripts/gmaps4rails/base/interfaces/marker_interface.coffee
296
+ - vendor/assets/javascripts/gmaps4rails/base/main.coffee
297
+ - vendor/assets/javascripts/gmaps4rails/base/main_controller_extensions/circle_controller.coffee
298
+ - vendor/assets/javascripts/gmaps4rails/base/main_controller_extensions/kml_controller.coffee
299
+ - vendor/assets/javascripts/gmaps4rails/base/main_controller_extensions/marker_controller.coffee
300
+ - vendor/assets/javascripts/gmaps4rails/base/main_controller_extensions/polygon_controller.coffee
301
+ - vendor/assets/javascripts/gmaps4rails/base/main_controller_extensions/polyline_controller.coffee
302
+ - vendor/assets/javascripts/gmaps4rails/base/objects/circle.coffee
303
+ - vendor/assets/javascripts/gmaps4rails/base/objects/kml.coffee
304
+ - vendor/assets/javascripts/gmaps4rails/base/objects/map.coffee
305
+ - vendor/assets/javascripts/gmaps4rails/base/objects/marker.coffee
306
+ - vendor/assets/javascripts/gmaps4rails/base/objects/polygon.coffee
307
+ - vendor/assets/javascripts/gmaps4rails/base/objects/polyline.coffee
308
+ - vendor/assets/javascripts/gmaps4rails/bing.coffee
309
+ - vendor/assets/javascripts/gmaps4rails/bing/main.coffee
310
+ - vendor/assets/javascripts/gmaps4rails/bing/objects/map.coffee
311
+ - vendor/assets/javascripts/gmaps4rails/bing/objects/marker.coffee
312
+ - vendor/assets/javascripts/gmaps4rails/bing/shared.coffee
313
+ - vendor/assets/javascripts/gmaps4rails/google.coffee
314
+ - vendor/assets/javascripts/gmaps4rails/google/main.coffee
315
+ - vendor/assets/javascripts/gmaps4rails/google/objects/circle.coffee
316
+ - vendor/assets/javascripts/gmaps4rails/google/objects/kml.coffee
317
+ - vendor/assets/javascripts/gmaps4rails/google/objects/map.coffee
318
+ - vendor/assets/javascripts/gmaps4rails/google/objects/marker.coffee
319
+ - vendor/assets/javascripts/gmaps4rails/google/objects/polygon.coffee
320
+ - vendor/assets/javascripts/gmaps4rails/google/objects/polyline.coffee
321
+ - vendor/assets/javascripts/gmaps4rails/google/shared.coffee
322
+ - vendor/assets/javascripts/gmaps4rails/openlayers.coffee
323
+ - vendor/assets/javascripts/gmaps4rails/openlayers/main.coffee
324
+ - vendor/assets/javascripts/gmaps4rails/openlayers/objects/map.coffee
325
+ - vendor/assets/javascripts/gmaps4rails/openlayers/objects/marker.coffee
326
+ - vendor/assets/javascripts/gmaps4rails/openlayers/objects/polyline.coffee
327
+ - vendor/assets/javascripts/gmaps4rails/openlayers/shared.coffee
37
328
  homepage: http://github.com/apneadiving/Google-Maps-for-Rails
38
329
  licenses: []
39
- metadata: {}
40
330
  post_install_message:
41
331
  rdoc_options: []
42
332
  require_paths:
43
333
  - lib
44
334
  required_ruby_version: !ruby/object:Gem::Requirement
335
+ none: false
45
336
  requirements:
46
- - - ">="
337
+ - - ! '>='
47
338
  - !ruby/object:Gem::Version
48
339
  version: '0'
340
+ segments:
341
+ - 0
342
+ hash: -3675114591497841925
49
343
  required_rubygems_version: !ruby/object:Gem::Requirement
344
+ none: false
50
345
  requirements:
51
- - - ">="
346
+ - - ! '>'
52
347
  - !ruby/object:Gem::Version
53
- version: '0'
348
+ version: 1.3.1
54
349
  requirements: []
55
350
  rubyforge_project:
56
- rubygems_version: 2.5.1
351
+ rubygems_version: 1.8.24
57
352
  signing_key:
58
- specification_version: 4
353
+ specification_version: 3
59
354
  summary: Maps made easy for Rails 3
60
- test_files: []
355
+ test_files:
356
+ - spec/dummy/.gitignore
357
+ - spec/dummy/.rspec
358
+ - spec/dummy/README.rdoc
359
+ - spec/dummy/Rakefile
360
+ - spec/dummy/app/assets/javascripts/application.js
361
+ - spec/dummy/app/assets/stylesheets/application.css
362
+ - spec/dummy/app/assets/stylesheets/gmaps4rails.css
363
+ - spec/dummy/app/controllers/application_controller.rb
364
+ - spec/dummy/app/controllers/users_controller.rb
365
+ - spec/dummy/app/helpers/application_helper.rb
366
+ - spec/dummy/app/mailers/.gitkeep
367
+ - spec/dummy/app/models/.gitkeep
368
+ - spec/dummy/app/models/place.rb
369
+ - spec/dummy/app/models/user.rb
370
+ - spec/dummy/app/views/layouts/application.html.erb
371
+ - spec/dummy/app/views/users/_form.html.erb
372
+ - spec/dummy/app/views/users/edit.html.erb
373
+ - spec/dummy/app/views/users/index.html.erb
374
+ - spec/dummy/app/views/users/new.html.erb
375
+ - spec/dummy/app/views/users/show.html.erb
376
+ - spec/dummy/config.ru
377
+ - spec/dummy/config/application.rb
378
+ - spec/dummy/config/boot.rb
379
+ - spec/dummy/config/database.yml
380
+ - spec/dummy/config/environment.rb
381
+ - spec/dummy/config/environments/development.rb
382
+ - spec/dummy/config/environments/production.rb
383
+ - spec/dummy/config/environments/test.rb
384
+ - spec/dummy/config/initializers/backtrace_silencers.rb
385
+ - spec/dummy/config/initializers/gmaps4rails.rb
386
+ - spec/dummy/config/initializers/inflections.rb
387
+ - spec/dummy/config/initializers/mime_types.rb
388
+ - spec/dummy/config/initializers/secret_token.rb
389
+ - spec/dummy/config/initializers/session_store.rb
390
+ - spec/dummy/config/initializers/wrap_parameters.rb
391
+ - spec/dummy/config/locales/en.yml
392
+ - spec/dummy/config/routes.rb
393
+ - spec/dummy/db/migrate/20120408170155_create_users.rb
394
+ - spec/dummy/db/schema.rb
395
+ - spec/dummy/lib/assets/.gitkeep
396
+ - spec/dummy/log/.gitkeep
397
+ - spec/dummy/public/404.html
398
+ - spec/dummy/public/422.html
399
+ - spec/dummy/public/500.html
400
+ - spec/dummy/public/favicon.ico
401
+ - spec/dummy/public/javascripts/Player.js
402
+ - spec/dummy/public/javascripts/Song.js
403
+ - spec/dummy/public/logo.png
404
+ - spec/dummy/script/rails
405
+ - spec/factories/place_factory.rb
406
+ - spec/factories/user_factory.rb
407
+ - spec/fixtures/google_direction_valid.json
408
+ - spec/fixtures/google_geocoding_toulon_france.json
409
+ - spec/fixtures/google_places_valid.json
410
+ - spec/fixtures/google_wrong_geocoding.json
411
+ - spec/launchers/all_but_requests.rb
412
+ - spec/launchers/all_specs.rb
413
+ - spec/launchers/requests.rb
414
+ - spec/lib/base_spec.rb
415
+ - spec/lib/direction_spec.rb
416
+ - spec/lib/geocoder_spec.rb
417
+ - spec/lib/js_builder_spec.rb
418
+ - spec/lib/json_builder_spec.rb
419
+ - spec/lib/places_spec.rb
420
+ - spec/models/place_spec.rb
421
+ - spec/models/user_spec.rb
422
+ - spec/spec_helper.rb
423
+ - spec/support/geocoding.rb
424
+ - spec/support/matchers.rb