gmaps4rails 1.4.5 → 1.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +4 -4
- data/app/assets/javascripts/gmaps4rails/gmaps4rails.base.js.coffee +47 -45
- data/app/assets/javascripts/gmaps4rails/gmaps4rails.googlemaps.js.coffee +22 -20
- data/app/views/gmaps4rails/_gmaps4rails.html.erb +1 -1
- data/app/views/gmaps4rails/_scripts.html.erb +12 -6
- data/lib/gmaps4rails/helper/gmaps4rails_helper.rb +18 -13
- data/lib/gmaps4rails/json_handler.rb +6 -3
- data/public/javascripts/gmaps4rails/gmaps4rails.base.js +7 -6
- data/public/javascripts/gmaps4rails/gmaps4rails.googlemaps.js +3 -1
- metadata +35 -52
data/README.rdoc
CHANGED
@@ -39,13 +39,13 @@ To make Rails serve the assets (javascripts, stylesheets and marker images) you
|
|
39
39
|
- if you are using Rails 3.1 and have asset pipeline enabled ('config.assets.enabled = true' in config/application.rb), include the appropriate manifest:
|
40
40
|
|
41
41
|
* //= require gmaps4rails/bing.js
|
42
|
-
|
42
|
+
|
43
43
|
* //= require gmaps4rails/googlemaps.js
|
44
|
-
|
44
|
+
|
45
45
|
* //= require gmaps4rails/mapquest.js
|
46
|
-
|
46
|
+
|
47
47
|
* //= require gmaps4rails/openlayers.js
|
48
|
-
|
48
|
+
|
49
49
|
* //= require gmaps4rails/all_apis.js
|
50
50
|
|
51
51
|
Stylesheet:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Gmaps = {}
|
2
2
|
|
3
|
-
Gmaps.loadMaps = ->
|
3
|
+
Gmaps.loadMaps = ->
|
4
4
|
#loop through all variable names.
|
5
5
|
#there should only be maps inside so it trigger their load function
|
6
6
|
for key, value of Gmaps
|
@@ -26,22 +26,22 @@ class @Gmaps4Rails
|
|
26
26
|
@infobox = -> false #to let user use custom infoboxes
|
27
27
|
@jsTemplate = false #to let user create infowindows client side
|
28
28
|
|
29
|
-
@default_map_options =
|
29
|
+
@default_map_options =
|
30
30
|
id: 'map'
|
31
31
|
draggable: true
|
32
32
|
detect_location: false # should the browser attempt to use geolocation detection features of HTML5?
|
33
33
|
center_on_user: false # centers map on the location detected through the browser
|
34
34
|
center_latitude: 0
|
35
|
-
center_longitude: 0
|
35
|
+
center_longitude: 0
|
36
36
|
zoom: 7
|
37
37
|
maxZoom: null
|
38
38
|
minZoom: null
|
39
39
|
auto_adjust : true # adjust the map to the markers if set to true
|
40
40
|
auto_zoom: true # zoom given by auto-adjust
|
41
|
-
bounds: [] # adjust map to these limits. Should be [{"lat": , "lng": }]
|
41
|
+
bounds: [] # adjust map to these limits. Should be [{"lat": , "lng": }]
|
42
42
|
raw: {} # raw json to pass additional options
|
43
43
|
|
44
|
-
@default_markers_conf =
|
44
|
+
@default_markers_conf =
|
45
45
|
#Marker config
|
46
46
|
title: ""
|
47
47
|
#MarkerImage config
|
@@ -65,15 +65,15 @@ class @Gmaps4Rails
|
|
65
65
|
@circles = [] # contains raw data, array of hash
|
66
66
|
@markerClusterer = null # contains all marker clusterers
|
67
67
|
@markerImages = []
|
68
|
-
|
68
|
+
|
69
69
|
#tnitializes the map
|
70
70
|
initialize : ->
|
71
71
|
@map = @createMap()
|
72
|
-
if (@map_options.detect_location == true or @map_options.center_on_user == true)
|
73
|
-
@findUserLocation(this)
|
72
|
+
if (@map_options.detect_location == true or @map_options.center_on_user == true)
|
73
|
+
@findUserLocation(this)
|
74
74
|
#resets sidebar if needed
|
75
75
|
@resetSidebarContent()
|
76
|
-
|
76
|
+
|
77
77
|
findUserLocation : (map_object) ->
|
78
78
|
if (navigator.geolocation)
|
79
79
|
#try to retrieve user's position
|
@@ -84,9 +84,9 @@ class @Gmaps4Rails
|
|
84
84
|
map_object.centerMapOnUser()
|
85
85
|
positionFailure = ->
|
86
86
|
map_object.geolocationFailure(true)
|
87
|
-
|
87
|
+
|
88
88
|
navigator.geolocation.getCurrentPosition( positionSuccessful, positionFailure)
|
89
|
-
else
|
89
|
+
else
|
90
90
|
#failure but the navigator doesn't handle geolocation
|
91
91
|
map_object.geolocationFailure(false)
|
92
92
|
|
@@ -101,16 +101,16 @@ class @Gmaps4Rails
|
|
101
101
|
|
102
102
|
directionsDisplay.setMap(@map)
|
103
103
|
#display panel only if required
|
104
|
-
if @direction_conf.display_panel
|
104
|
+
if @direction_conf.display_panel
|
105
105
|
directionsDisplay.setPanel(document.getElementById(@direction_conf.panel_id))
|
106
|
-
|
106
|
+
|
107
107
|
directionsDisplay.setOptions
|
108
108
|
suppressMarkers: false
|
109
109
|
suppressInfoWindows: false
|
110
110
|
suppressPolylines: false
|
111
|
-
|
112
|
-
request =
|
113
|
-
origin: @direction_conf.origin
|
111
|
+
|
112
|
+
request =
|
113
|
+
origin: @direction_conf.origin
|
114
114
|
destination: @direction_conf.destination
|
115
115
|
waypoints: @direction_conf.waypoints
|
116
116
|
optimizeWaypoints: @direction_conf.optimizeWaypoints
|
@@ -195,7 +195,7 @@ class @Gmaps4Rails
|
|
195
195
|
#creates a single polygon, triggered by create_polygons
|
196
196
|
create_polygon : (polygon) ->
|
197
197
|
polygon_coordinates = []
|
198
|
-
|
198
|
+
|
199
199
|
#Polygon points are in an Array, that's why looping is necessary
|
200
200
|
for point in polygon
|
201
201
|
latlng = @createLatLng(point.lat, point.lng)
|
@@ -225,7 +225,7 @@ class @Gmaps4Rails
|
|
225
225
|
#////////////////////////////////////////////////////
|
226
226
|
#/////////////////// POLYLINES //////////////////////
|
227
227
|
#////////////////////////////////////////////////////
|
228
|
-
|
228
|
+
|
229
229
|
#replace old markers with new markers on an existing map
|
230
230
|
replacePolylines : (new_polylines) ->
|
231
231
|
#reset previous polylines and kill them from map
|
@@ -236,7 +236,7 @@ class @Gmaps4Rails
|
|
236
236
|
@create_polylines()
|
237
237
|
#.... and adjust map boundaries
|
238
238
|
@adjustMapToBounds()
|
239
|
-
|
239
|
+
|
240
240
|
destroy_polylines : ->
|
241
241
|
for polyline in @polylines
|
242
242
|
#delete polylines from map
|
@@ -252,17 +252,16 @@ class @Gmaps4Rails
|
|
252
252
|
#creates a single polyline, triggered by create_polylines
|
253
253
|
create_polyline : (polyline) ->
|
254
254
|
polyline_coordinates = []
|
255
|
-
|
255
|
+
|
256
256
|
#2 cases here, either we have a coded array of LatLng or we have an Array of LatLng
|
257
257
|
for element in polyline
|
258
258
|
#if we have a coded array
|
259
259
|
if element.coded_array?
|
260
260
|
decoded_array = new google.maps.geometry.encoding.decodePath(element.coded_array)
|
261
261
|
#loop through every point in the array
|
262
|
-
for point in decoded_array
|
262
|
+
for point in decoded_array
|
263
263
|
polyline_coordinates.push(point)
|
264
|
-
|
265
|
-
|
264
|
+
|
266
265
|
#or we have an array of latlng
|
267
266
|
else
|
268
267
|
#by convention, a single polyline could be customized in the first array or it uses default values
|
@@ -270,19 +269,22 @@ class @Gmaps4Rails
|
|
270
269
|
strokeColor = element.strokeColor || @polylines_conf.strokeColor
|
271
270
|
strokeOpacity = element.strokeOpacity || @polylines_conf.strokeOpacity
|
272
271
|
strokeWeight = element.strokeWeight || @polylines_conf.strokeWeight
|
273
|
-
|
272
|
+
clickable = element.clickable || @polylines_conf.clickable
|
273
|
+
zIndex = element.zIndex || @polylines_conf.zIndex
|
274
|
+
|
274
275
|
#add latlng if positions provided
|
275
|
-
if element.lat? && element.lng?
|
276
|
+
if element.lat? && element.lng?
|
276
277
|
latlng = @createLatLng(element.lat, element.lng)
|
277
278
|
polyline_coordinates.push(latlng)
|
278
279
|
|
279
|
-
# Construct the polyline
|
280
|
+
# Construct the polyline
|
280
281
|
new_poly = new google.maps.Polyline
|
281
282
|
path: polyline_coordinates
|
282
283
|
strokeColor: strokeColor
|
283
284
|
strokeOpacity: strokeOpacity
|
284
285
|
strokeWeight: strokeWeight
|
285
|
-
clickable:
|
286
|
+
clickable: clickable
|
287
|
+
zIndex: zIndex
|
286
288
|
|
287
289
|
#save polyline
|
288
290
|
polyline.serviceObject = new_poly
|
@@ -292,7 +294,7 @@ class @Gmaps4Rails
|
|
292
294
|
#///////////////////// MARKERS //////////////////////
|
293
295
|
#////////////////////////////////////////////////////
|
294
296
|
|
295
|
-
#creates, clusterizes and adjusts map
|
297
|
+
#creates, clusterizes and adjusts map
|
296
298
|
create_markers : ->
|
297
299
|
@createServiceMarkersFromMarkers()
|
298
300
|
@clusterize()
|
@@ -310,7 +312,7 @@ class @Gmaps4Rails
|
|
310
312
|
#retrieve coordinates from the æarray
|
311
313
|
Lat = LatLng[0]
|
312
314
|
Lng = LatLng[1]
|
313
|
-
|
315
|
+
|
314
316
|
#save object
|
315
317
|
@markers[index].serviceObject = @createMarker
|
316
318
|
"marker_picture": if @markers[index].picture then @markers[index].picture else @markers_conf.picture
|
@@ -332,10 +334,10 @@ class @Gmaps4Rails
|
|
332
334
|
@createInfoWindow(@markers[index])
|
333
335
|
#create sidebar if enabled
|
334
336
|
@createSidebar(@markers[index])
|
335
|
-
|
337
|
+
|
336
338
|
@markers_conf.offset = @markers.length
|
337
339
|
|
338
|
-
#creates Image Anchor Position or return null if nothing passed
|
340
|
+
#creates Image Anchor Position or return null if nothing passed
|
339
341
|
createImageAnchorPosition : (anchorLocation) ->
|
340
342
|
if (anchorLocation == null)
|
341
343
|
return null
|
@@ -409,31 +411,31 @@ class @Gmaps4Rails
|
|
409
411
|
if @map_options.auto_adjust
|
410
412
|
#from markers
|
411
413
|
@extendBoundsWithMarkers()
|
412
|
-
|
414
|
+
|
413
415
|
#from polylines:
|
414
|
-
for polyline in @polylines
|
416
|
+
for polyline in @polylines
|
415
417
|
polyline_points = polyline.serviceObject.latLngs.getArray()[0].getArray()
|
416
418
|
for point in polyline_points
|
417
419
|
@boundsObject.extend point
|
418
|
-
|
420
|
+
|
419
421
|
#from polygons:
|
420
422
|
for polygon in @polygons
|
421
423
|
polygon_points = polygon.serviceObject.latLngs.getArray()[0].getArray()
|
422
|
-
for point in polygon_points
|
424
|
+
for point in polygon_points
|
423
425
|
@boundsObject.extend point
|
424
|
-
|
426
|
+
|
425
427
|
#from circles
|
426
428
|
for circle in @circles
|
427
429
|
@boundsObject.extend(circle.serviceObject.getBounds().getNorthEast())
|
428
430
|
@boundsObject.extend(circle.serviceObject.getBounds().getSouthWest())
|
429
431
|
|
430
|
-
#in every case, I've to take into account the bounds set up by the user
|
432
|
+
#in every case, I've to take into account the bounds set up by the user
|
431
433
|
for bound in @map_options.bounds
|
432
434
|
#create points from bounds provided
|
433
435
|
#TODO:only works with google maps
|
434
436
|
bound = @createLatLng(bound.lat, bound.lng)
|
435
437
|
@boundsObject.extend bound
|
436
|
-
|
438
|
+
|
437
439
|
#SECOND_STEP: ajust the map to the bounds
|
438
440
|
if @map_options.auto_adjust or @map_options.bounds.length > 0
|
439
441
|
|
@@ -443,13 +445,13 @@ class @Gmaps4Rails
|
|
443
445
|
@map_options.center_latitude = map_center.lat()
|
444
446
|
@map_options.center_longitude = map_center.lng()
|
445
447
|
@map.setCenter(map_center)
|
446
|
-
else
|
448
|
+
else
|
447
449
|
@fitBounds()
|
448
|
-
|
450
|
+
|
449
451
|
#////////////////////////////////////////////////////
|
450
452
|
#///////////////// KML //////////////////
|
451
453
|
#////////////////////////////////////////////////////
|
452
|
-
|
454
|
+
|
453
455
|
create_kml : ->
|
454
456
|
for kml in @kml
|
455
457
|
kml.serviceObject = @createKmlLayer kml
|
@@ -471,7 +473,7 @@ class @Gmaps4Rails
|
|
471
473
|
Lat = parseFloat(Lat0) + (180/Math.PI)*(dy/6378137)
|
472
474
|
Lng = parseFloat(Lng0) + ( 90/Math.PI)*(dx/6378137)/Math.cos(Lat0)
|
473
475
|
return [Lat, Lng]
|
474
|
-
|
476
|
+
|
475
477
|
mergeObjectWithDefault : (object1, object2) ->
|
476
478
|
copy_object1 = {}
|
477
479
|
for key, value of object1
|
@@ -481,12 +483,12 @@ class @Gmaps4Rails
|
|
481
483
|
unless copy_object1[key]?
|
482
484
|
copy_object1[key] = value
|
483
485
|
return copy_object1
|
484
|
-
|
486
|
+
|
485
487
|
mergeWithDefault : (objectName) ->
|
486
488
|
default_object = @["default_" + objectName]
|
487
489
|
object = @[objectName]
|
488
490
|
@[objectName] = @mergeObjectWithDefault(object, default_object)
|
489
491
|
return true
|
490
|
-
|
492
|
+
|
491
493
|
#gives a value between -1 and 1
|
492
|
-
random : -> return(Math.random() * 2 -1)
|
494
|
+
random : -> return(Math.random() * 2 -1)
|
@@ -3,7 +3,7 @@
|
|
3
3
|
#######################################################################################################
|
4
4
|
|
5
5
|
class @Gmaps4RailsGoogle extends Gmaps4Rails
|
6
|
-
|
6
|
+
|
7
7
|
constructor: ->
|
8
8
|
super
|
9
9
|
#Map settings
|
@@ -13,12 +13,12 @@ class @Gmaps4RailsGoogle extends Gmaps4Rails
|
|
13
13
|
type: "ROADMAP" # HYBRID, ROADMAP, SATELLITE, TERRAIN
|
14
14
|
|
15
15
|
#markers + info styling
|
16
|
-
@markers_conf =
|
16
|
+
@markers_conf =
|
17
17
|
clusterer_gridSize: 50
|
18
18
|
clusterer_maxZoom: 5
|
19
19
|
custom_cluster_pictures: null
|
20
|
-
custom_infowindow_class: null
|
21
|
-
|
20
|
+
custom_infowindow_class: null
|
21
|
+
|
22
22
|
@mergeWithDefault("map_options")
|
23
23
|
@mergeWithDefault("markers_conf")
|
24
24
|
|
@@ -40,8 +40,10 @@ class @Gmaps4RailsGoogle extends Gmaps4Rails
|
|
40
40
|
strokeColor: "#FF0000"
|
41
41
|
strokeOpacity: 1
|
42
42
|
strokeWeight: 2
|
43
|
+
clickable: false
|
44
|
+
zIndex: null
|
43
45
|
|
44
|
-
#Circle Styling
|
46
|
+
#Circle Styling
|
45
47
|
@circles_conf = #default style for circles
|
46
48
|
fillColor: "#00AAFF"
|
47
49
|
fillOpacity: 0.35
|
@@ -52,17 +54,17 @@ class @Gmaps4RailsGoogle extends Gmaps4Rails
|
|
52
54
|
zIndex: null
|
53
55
|
|
54
56
|
#Direction Settings
|
55
|
-
@direction_conf =
|
57
|
+
@direction_conf =
|
56
58
|
panel_id: null
|
57
59
|
display_panel: false
|
58
|
-
origin: null
|
60
|
+
origin: null
|
59
61
|
destination: null
|
60
62
|
waypoints: [] #[{location: "toulouse,fr", stopover: true}, {location: "Clermont-Ferrand, fr", stopover: true}]
|
61
63
|
optimizeWaypoints: false
|
62
64
|
unitSystem: "METRIC" #IMPERIAL
|
63
65
|
avoidHighways: false
|
64
66
|
avoidTolls: false
|
65
|
-
region: null
|
67
|
+
region: null
|
66
68
|
travelMode: "DRIVING" #WALKING, BICYCLING
|
67
69
|
|
68
70
|
#////////////////////////////////////////////////////
|
@@ -79,7 +81,7 @@ class @Gmaps4RailsGoogle extends Gmaps4Rails
|
|
79
81
|
return new google.maps.LatLngBounds()
|
80
82
|
|
81
83
|
createMap : ->
|
82
|
-
defaultOptions =
|
84
|
+
defaultOptions =
|
83
85
|
maxZoom: @map_options.maxZoom
|
84
86
|
minZoom: @map_options.minZoom
|
85
87
|
zoom: @map_options.zoom
|
@@ -91,7 +93,7 @@ class @Gmaps4RailsGoogle extends Gmaps4Rails
|
|
91
93
|
draggable: @map_options.draggable
|
92
94
|
|
93
95
|
mergedOptions = @mergeObjectWithDefault @map_options.raw, defaultOptions
|
94
|
-
|
96
|
+
|
95
97
|
return new google.maps.Map document.getElementById(@map_options.id), mergedOptions
|
96
98
|
|
97
99
|
|
@@ -106,11 +108,11 @@ class @Gmaps4RailsGoogle extends Gmaps4Rails
|
|
106
108
|
#////////////////////////////////////////////////////
|
107
109
|
|
108
110
|
createMarker : (args) ->
|
109
|
-
markerLatLng = @createLatLng(args.Lat, args.Lng)
|
111
|
+
markerLatLng = @createLatLng(args.Lat, args.Lng)
|
110
112
|
#Marker sizes are expressed as a Size of X,Y
|
111
113
|
if args.marker_picture == "" and args.rich_marker == null
|
112
114
|
defaultOptions = {position: markerLatLng, map: @map, title: args.marker_title, draggable: args.marker_draggable}
|
113
|
-
mergedOptions = @mergeObjectWithDefault @markers_conf.raw, defaultOptions
|
115
|
+
mergedOptions = @mergeObjectWithDefault @markers_conf.raw, defaultOptions
|
114
116
|
return new google.maps.Marker mergedOptions
|
115
117
|
|
116
118
|
if (args.rich_marker != null)
|
@@ -123,7 +125,7 @@ class @Gmaps4RailsGoogle extends Gmaps4Rails
|
|
123
125
|
anchor: if args.marker_anchor == null then 0 else args.marker_anchor[0]
|
124
126
|
})
|
125
127
|
|
126
|
-
#default behavior
|
128
|
+
#default behavior
|
127
129
|
#calculate MarkerImage anchor location
|
128
130
|
imageAnchorPosition = @createImageAnchorPosition args.marker_anchor
|
129
131
|
shadowAnchorPosition = @createImageAnchorPosition args.shadow_anchor
|
@@ -131,7 +133,7 @@ class @Gmaps4RailsGoogle extends Gmaps4Rails
|
|
131
133
|
markerImage = @createOrRetrieveImage(args.marker_picture, args.marker_width, args.marker_height, imageAnchorPosition)
|
132
134
|
shadowImage = @createOrRetrieveImage(args.shadow_picture, args.shadow_width, args.shadow_height, shadowAnchorPosition)
|
133
135
|
defaultOptions = {position: markerLatLng, map: @map, icon: markerImage, title: args.marker_title, draggable: args.marker_draggable, shadow: shadowImage}
|
134
|
-
mergedOptions = @mergeObjectWithDefault @markers_conf.raw, defaultOptions
|
136
|
+
mergedOptions = @mergeObjectWithDefault @markers_conf.raw, defaultOptions
|
135
137
|
return new google.maps.Marker mergedOptions
|
136
138
|
|
137
139
|
#checks if obj is included in arr Array and returns the position or false
|
@@ -145,13 +147,13 @@ class @Gmaps4RailsGoogle extends Gmaps4Rails
|
|
145
147
|
createOrRetrieveImage : (currentMarkerPicture, markerWidth, markerHeight, imageAnchorPosition) ->
|
146
148
|
return null if (currentMarkerPicture == "" or currentMarkerPicture == null )
|
147
149
|
|
148
|
-
test_image_index = @includeMarkerImage(@markerImages, currentMarkerPicture)
|
150
|
+
test_image_index = @includeMarkerImage(@markerImages, currentMarkerPicture)
|
149
151
|
switch test_image_index
|
150
152
|
when false
|
151
153
|
markerImage = @createMarkerImage(currentMarkerPicture, @createSize(markerWidth, markerHeight), null, imageAnchorPosition, null )
|
152
154
|
@markerImages.push(markerImage)
|
153
|
-
return markerImage
|
154
|
-
break
|
155
|
+
return markerImage
|
156
|
+
break
|
155
157
|
else
|
156
158
|
return @markerImages[test_image_index] if typeof test_image_index == 'number'
|
157
159
|
return false
|
@@ -210,7 +212,7 @@ class @Gmaps4RailsGoogle extends Gmaps4Rails
|
|
210
212
|
#////////////////////////////////////////////////////
|
211
213
|
|
212
214
|
#// creates infowindows
|
213
|
-
createInfoWindow : (marker_container) ->
|
215
|
+
createInfoWindow : (marker_container) ->
|
214
216
|
if typeof(@jsTemplate) == "function" or marker_container.description?
|
215
217
|
marker_container.description = @jsTemplate(marker_container) if typeof(@jsTemplate) == "function"
|
216
218
|
if @markers_conf.custom_infowindow_class != null
|
@@ -231,7 +233,7 @@ class @Gmaps4RailsGoogle extends Gmaps4Rails
|
|
231
233
|
openInfoWindow : (currentMap, infoWindow, marker) ->
|
232
234
|
return ->
|
233
235
|
# Close the latest selected marker before opening the current one.
|
234
|
-
currentMap.visibleInfoWindow.close() if currentMap.visibleInfoWindow != null
|
236
|
+
currentMap.visibleInfoWindow.close() if currentMap.visibleInfoWindow != null
|
235
237
|
infoWindow.open(currentMap.map, marker)
|
236
238
|
currentMap.visibleInfoWindow = infoWindow
|
237
239
|
|
@@ -256,4 +258,4 @@ class @Gmaps4RailsGoogle extends Gmaps4Rails
|
|
256
258
|
|
257
259
|
centerMapOnUser : ->
|
258
260
|
@map.setCenter(@userLocation)
|
259
|
-
|
261
|
+
|
@@ -9,7 +9,7 @@ if enable_css == true && options[:scripts].nil? %>
|
|
9
9
|
|
10
10
|
<% content_for :scripts do %>
|
11
11
|
|
12
|
-
<%= gmaps4rails_js_files(options[:map_options], options[:scripts], enable_js) %>
|
12
|
+
<%= gmaps4rails_js_files(options[:map_options], options[:scripts], enable_js, options[:markers].try(:[], :options)) %>
|
13
13
|
<script type="text/javascript" charset="utf-8">
|
14
14
|
<%=raw options.to_gmaps4rails %>
|
15
15
|
</script>
|
@@ -7,12 +7,18 @@
|
|
7
7
|
<% when "bing" %>
|
8
8
|
<script type="text/javascript" src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>
|
9
9
|
<% else %>
|
10
|
-
<script type="text/javascript" src="//maps.google.com/maps/api/js?v=3.
|
11
|
-
|
12
|
-
|
13
|
-
|
10
|
+
<script type="text/javascript" src="//maps.google.com/maps/api/js?v=3.8&sensor=false&libraries=geometry<%= gmaps4rails_js_libraries(map_options.try(:[], :libraries)) %>&<%= gmaps4rails_map_language(map_options) %>"></script>
|
11
|
+
<% if marker_options.try(:[], :custom_infowindow_class) %>
|
12
|
+
<script type="text/javascript" src="//google-maps-utility-library-v3.googlecode.com/svn/tags/infobox/1.1.9/src/infobox_packed.js"></script>
|
13
|
+
<% end %>
|
14
|
+
<% if marker_options.try(:[], :do_clustering) %>
|
15
|
+
<script type="text/javascript" src="//google-maps-utility-library-v3.googlecode.com/svn/tags/markerclustererplus/2.0.5/src/markerclusterer_packed.js"></script>
|
16
|
+
<% end %>
|
17
|
+
<% if marker_options.try(:[], :rich_marker) %>
|
18
|
+
<script type="text/javascript" src="//google-maps-utility-library-v3.googlecode.com/svn/trunk/richmarker/src/richmarker-compiled.js"></script>
|
19
|
+
<% end %>
|
14
20
|
<% end %>
|
15
|
-
|
21
|
+
|
16
22
|
<% if Rails::VERSION::MAJOR >= 3 && Rails::VERSION::MINOR < 1 %>
|
17
23
|
<% unless scripts.try(:to_sym) == :api %>
|
18
24
|
<%= javascript_include_tag 'gmaps4rails/gmaps4rails.base.js' %>
|
@@ -28,4 +34,4 @@
|
|
28
34
|
<%= javascript_include_tag 'gmaps4rails/gmaps4rails.googlemaps.js' %>
|
29
35
|
<% end %>
|
30
36
|
<% end %>
|
31
|
-
<% end %>
|
37
|
+
<% end %>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Gmaps4railsHelper
|
2
|
-
|
2
|
+
|
3
3
|
# shortcut helper for basic marker display
|
4
|
-
|
4
|
+
|
5
5
|
def gmaps4rails(builder, enable_css = true, enable_js = true )
|
6
6
|
options = {
|
7
7
|
:map_options => { :auto_adjust => true},
|
@@ -9,36 +9,41 @@ module Gmaps4railsHelper
|
|
9
9
|
}
|
10
10
|
render :partial => '/gmaps4rails/gmaps4rails', :locals => { :options => options.with_indifferent_access, :enable_css => enable_css, :enable_js => enable_js }
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
# complete helper to pass all variables alongside their options
|
14
|
-
|
14
|
+
|
15
15
|
def gmaps(options, enable_css = true, enable_js = true )
|
16
16
|
render :partial => '/gmaps4rails/gmaps4rails', :locals => { :options => options.with_indifferent_access, :enable_css => enable_css, :enable_js => enable_js }
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
def gmaps4rails_js_libraries(libraries_array)
|
20
20
|
return "" if libraries_array.nil?
|
21
21
|
"," + libraries_array.join(",")
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
|
+
def gmaps4rails_map_language(map_options)
|
25
|
+
"language=#{map_options.try(:[], :language) || ''}&hl=#{map_options.try(:[], :hl) || ''}®ion=#{map_options.try(:[], :region) || ''}".html_safe
|
26
|
+
end
|
27
|
+
|
24
28
|
def gmaps4rails_map_id(map_options)
|
25
29
|
map_options.try(:[], :id) || Gmaps4rails::DEFAULT_MAP_ID
|
26
30
|
end
|
27
|
-
|
31
|
+
|
28
32
|
def gmaps4rails_container_class(map_options)
|
29
33
|
map_options.try(:[], :container_class) || "map_container"
|
30
34
|
end
|
31
|
-
|
35
|
+
|
32
36
|
def gmaps4rails_map_class(map_options)
|
33
37
|
default_class = map_options.try(:[], :provider) == "bing" ? "bing_map" : "gmaps4rails_map"
|
34
38
|
map_options.try(:[], :class) || default_class
|
35
39
|
end
|
36
|
-
|
37
|
-
|
38
|
-
|
40
|
+
|
41
|
+
|
42
|
+
def gmaps4rails_js_files(map_options = nil, scripts = nil, enable_js = true, marker_options = nil)
|
43
|
+
render "/gmaps4rails/scripts", :map_options => map_options, :scripts => scripts, :enable_js => enable_js, :marker_options => marker_options
|
39
44
|
end
|
40
|
-
|
45
|
+
|
41
46
|
def gmaps4rails_html(map_options = nil)
|
42
47
|
render "/gmaps4rails/html", :map_options => map_options
|
43
48
|
end
|
44
|
-
end
|
49
|
+
end
|
@@ -15,23 +15,27 @@ module Gmaps4rails
|
|
15
15
|
|
16
16
|
def Gmaps4rails.infowindow(string)
|
17
17
|
@json_hash[:description] = string
|
18
|
+
true
|
18
19
|
end
|
19
20
|
|
20
21
|
def Gmaps4rails.title(string)
|
21
22
|
@json_hash[:title] = string
|
23
|
+
true
|
22
24
|
end
|
23
25
|
|
24
26
|
def Gmaps4rails.sidebar(string)
|
25
27
|
@json_hash[:sidebar] = string
|
28
|
+
true
|
26
29
|
end
|
27
30
|
|
28
31
|
def Gmaps4rails.json(json)
|
29
32
|
return @json_hash.merge! json if json.is_a? Hash
|
30
|
-
|
33
|
+
true
|
31
34
|
end
|
32
35
|
|
33
36
|
def Gmaps4rails.picture(hash)
|
34
37
|
@json_hash.merge! hash
|
38
|
+
true
|
35
39
|
end
|
36
40
|
|
37
41
|
private
|
@@ -106,8 +110,7 @@ module Gmaps4rails
|
|
106
110
|
#
|
107
111
|
def Gmaps4rails.handle_block(&block)
|
108
112
|
block_result = yield(@object, ::Gmaps4rails)
|
109
|
-
|
110
|
-
@custom_json = block_result
|
113
|
+
@custom_json = block_result unless block_result == true
|
111
114
|
end
|
112
115
|
|
113
116
|
end
|
@@ -268,16 +268,14 @@
|
|
268
268
|
return _results;
|
269
269
|
};
|
270
270
|
Gmaps4Rails.prototype.create_polyline = function(polyline) {
|
271
|
-
var decoded_array, element, latlng, new_poly, point, polyline_coordinates, strokeColor, strokeOpacity, strokeWeight, _i, _j, _len, _len2
|
271
|
+
var clickable, decoded_array, element, latlng, new_poly, point, polyline_coordinates, strokeColor, strokeOpacity, strokeWeight, zIndex, _i, _j, _len, _len2;
|
272
272
|
polyline_coordinates = [];
|
273
273
|
for (_i = 0, _len = polyline.length; _i < _len; _i++) {
|
274
274
|
element = polyline[_i];
|
275
275
|
if (element.coded_array != null) {
|
276
276
|
decoded_array = new google.maps.geometry.encoding.decodePath(element.coded_array);
|
277
|
-
|
278
|
-
|
279
|
-
point = _ref[_j];
|
280
|
-
polyline_coordinates.push(point);
|
277
|
+
for (_j = 0, _len2 = decoded_array.length; _j < _len2; _j++) {
|
278
|
+
point = decoded_array[_j];
|
281
279
|
polyline_coordinates.push(point);
|
282
280
|
}
|
283
281
|
} else {
|
@@ -285,6 +283,8 @@
|
|
285
283
|
strokeColor = element.strokeColor || this.polylines_conf.strokeColor;
|
286
284
|
strokeOpacity = element.strokeOpacity || this.polylines_conf.strokeOpacity;
|
287
285
|
strokeWeight = element.strokeWeight || this.polylines_conf.strokeWeight;
|
286
|
+
clickable = element.clickable || this.polylines_conf.clickable;
|
287
|
+
zIndex = element.zIndex || this.polylines_conf.zIndex;
|
288
288
|
}
|
289
289
|
if ((element.lat != null) && (element.lng != null)) {
|
290
290
|
latlng = this.createLatLng(element.lat, element.lng);
|
@@ -297,7 +297,8 @@
|
|
297
297
|
strokeColor: strokeColor,
|
298
298
|
strokeOpacity: strokeOpacity,
|
299
299
|
strokeWeight: strokeWeight,
|
300
|
-
clickable:
|
300
|
+
clickable: clickable,
|
301
|
+
zIndex: zIndex
|
301
302
|
});
|
302
303
|
polyline.serviceObject = new_poly;
|
303
304
|
return new_poly.setMap(this.map);
|
metadata
CHANGED
@@ -1,49 +1,41 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: gmaps4rails
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.4.6
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 4
|
9
|
-
- 5
|
10
|
-
version: 1.4.5
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Benjamin Roth
|
14
9
|
- David Ruyer
|
15
10
|
autorequire:
|
16
11
|
bindir: bin
|
17
12
|
cert_chain: []
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
- !ruby/object:Gem::Dependency
|
13
|
+
date: 2012-03-07 00:00:00.000000000Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
22
16
|
name: json
|
23
|
-
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
17
|
+
requirement: &2153339940 !ruby/object:Gem::Requirement
|
25
18
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
segments:
|
31
|
-
- 0
|
32
|
-
version: "0"
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
33
23
|
type: :runtime
|
34
|
-
|
35
|
-
|
36
|
-
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: *2153339940
|
26
|
+
description: ! 'Enables easy display of items (taken from a Rails 3 model) on a Google
|
27
|
+
Maps (JS API V3), OpenLayers, Mapquest and Bing. Geocoding + Directions included.
|
28
|
+
Provides much options: markers customization, infowindows, auto-adjusted zoom, polylines,
|
29
|
+
polygons, circles etc... See wiki on github for full description and examples.'
|
30
|
+
email:
|
37
31
|
- apnea.diving.deep@gmail.com
|
38
32
|
- david.ruyer@gmail.com
|
39
33
|
executables: []
|
40
|
-
|
41
34
|
extensions: []
|
42
|
-
|
43
|
-
extra_rdoc_files:
|
35
|
+
extra_rdoc_files:
|
44
36
|
- LICENSE.txt
|
45
37
|
- README.rdoc
|
46
|
-
files:
|
38
|
+
files:
|
47
39
|
- app/assets/javascripts/gmaps4rails/all_apis.js
|
48
40
|
- app/assets/javascripts/gmaps4rails/bing.js
|
49
41
|
- app/assets/javascripts/gmaps4rails/gmaps4rails.base.js.coffee
|
@@ -80,36 +72,27 @@ files:
|
|
80
72
|
- README.rdoc
|
81
73
|
homepage: http://github.com/apneadiving/Google-Maps-for-Rails
|
82
74
|
licenses: []
|
83
|
-
|
84
75
|
post_install_message:
|
85
76
|
rdoc_options: []
|
86
|
-
|
87
|
-
require_paths:
|
77
|
+
require_paths:
|
88
78
|
- lib
|
89
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
79
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
90
80
|
none: false
|
91
|
-
requirements:
|
92
|
-
- -
|
93
|
-
- !ruby/object:Gem::Version
|
94
|
-
|
95
|
-
|
96
|
-
- 0
|
97
|
-
version: "0"
|
98
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ! '>='
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
86
|
none: false
|
100
|
-
requirements:
|
101
|
-
- -
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
|
104
|
-
segments:
|
105
|
-
- 0
|
106
|
-
version: "0"
|
87
|
+
requirements:
|
88
|
+
- - ! '>='
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
107
91
|
requirements: []
|
108
|
-
|
109
92
|
rubyforge_project:
|
110
|
-
rubygems_version: 1.8.
|
93
|
+
rubygems_version: 1.8.6
|
111
94
|
signing_key:
|
112
95
|
specification_version: 3
|
113
|
-
summary: Enables easy display of items (taken from a Rails 3 model) on a Google Maps
|
96
|
+
summary: Enables easy display of items (taken from a Rails 3 model) on a Google Maps
|
97
|
+
(JS API V3), OpenLayers, Mapquest and Bing. Geocoding + Directions included.
|
114
98
|
test_files: []
|
115
|
-
|