gmaps4rails 1.1.1 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -36,6 +36,7 @@ class @Gmaps4Rails
36
36
  auto_adjust : true # adjust the map to the markers if set to true
37
37
  auto_zoom: true # zoom given by auto-adjust
38
38
  bounds: [] # adjust map to these limits. Should be [{"lat": , "lng": }]
39
+ raw: {} # raw json to pass additional options
39
40
 
40
41
  @default_markers_conf =
41
42
  #Marker config
@@ -51,7 +52,8 @@ class @Gmaps4Rails
51
52
  max_random_distance: 100 # in meters. Each marker coordinate could be altered by this distance in a random direction
52
53
  list_container: null # id of the ul that will host links to all markers
53
54
  offset: 0 # used when adding_markers to an existing map. Because new markers are concated with previous one, offset is here to prevent the existing from being re-created.
54
-
55
+ raw: {} # raw json to pass additional options
56
+
55
57
  #Stored variables
56
58
  @markers = [] # contains all markers. A marker contains the following: {"description": , "longitude": , "title":, "latitude":, "picture": "", "width": "", "length": "", "sidebar": "", "serviceObject": google_marker}
57
59
  @boundsObject = null # contains current bounds from markers, polylines etc...
@@ -68,7 +70,7 @@ class @Gmaps4Rails
68
70
  @findUserLocation(this)
69
71
  #resets sidebar if needed
70
72
  @resetSidebarContent()
71
-
73
+
72
74
  findUserLocation : (map_object) ->
73
75
  if (navigator.geolocation)
74
76
  #try to retrieve user's position
@@ -450,7 +452,10 @@ class @Gmaps4Rails
450
452
  return [Lat, Lng]
451
453
 
452
454
  mergeObjectWithDefault : (object1, object2) ->
453
- copy_object1 = object1
455
+ copy_object1 = {}
456
+ for key, value of object1
457
+ copy_object1[key] = value
458
+
454
459
  for key, value of object2
455
460
  unless copy_object1[key]?
456
461
  copy_object1[key] = value
@@ -79,7 +79,7 @@ class @Gmaps4RailsGoogle extends Gmaps4Rails
79
79
  return new google.maps.LatLngBounds()
80
80
 
81
81
  createMap : ->
82
- return new google.maps.Map document.getElementById(@map_options.id), {
82
+ defaultOptions =
83
83
  maxZoom: @map_options.maxZoom
84
84
  minZoom: @map_options.minZoom
85
85
  zoom: @map_options.zoom
@@ -89,7 +89,10 @@ class @Gmaps4RailsGoogle extends Gmaps4Rails
89
89
  disableDefaultUI: @map_options.disableDefaultUI
90
90
  disableDoubleClickZoom: @map_options.disableDoubleClickZoom
91
91
  draggable: @map_options.draggable
92
- }
92
+
93
+ mergedOptions = @mergeObjectWithDefault @map_options.raw, defaultOptions
94
+
95
+ return new google.maps.Map document.getElementById(@map_options.id), mergedOptions
93
96
 
94
97
 
95
98
  createMarkerImage : (markerPicture, markerSize, origin, anchor, scaledSize) ->
@@ -104,12 +107,13 @@ class @Gmaps4RailsGoogle extends Gmaps4Rails
104
107
 
105
108
  createMarker : (args) ->
106
109
  markerLatLng = @createLatLng(args.Lat, args.Lng)
107
-
108
110
  #Marker sizes are expressed as a Size of X,Y
109
- if args.marker_picture and args.rich_marker == null
110
- return new google.maps.Marker({position: markerLatLng, map: @map, title: args.marker_title, draggable: args.marker_draggable})
111
+ if args.marker_picture == "" and args.rich_marker == null
112
+ defaultOptions = {position: markerLatLng, map: @map, title: args.marker_title, draggable: args.marker_draggable}
113
+ mergedOptions = @mergeObjectWithDefault @markers_conf.raw, defaultOptions
114
+ return new google.maps.Marker mergedOptions
111
115
 
112
- else if (args.rich_marker != null)
116
+ if (args.rich_marker != null)
113
117
  return new RichMarker({
114
118
  position: markerLatLng
115
119
  map: @map
@@ -119,15 +123,16 @@ class @Gmaps4RailsGoogle extends Gmaps4Rails
119
123
  anchor: if args.marker_anchor == null then 0 else args.marker_anchor[0]
120
124
  })
121
125
 
122
- else
123
- #calculate MarkerImage anchor location
124
- imageAnchorPosition = @createImageAnchorPosition args.marker_anchor
125
- shadowAnchorPosition = @createImageAnchorPosition args.shadow_anchor
126
-
127
- #create or retrieve existing MarkerImages
128
- markerImage = @createOrRetrieveImage(args.marker_picture, args.marker_width, args.marker_height, imageAnchorPosition)
129
- shadowImage = @createOrRetrieveImage(args.shadow_picture, args.shadow_width, args.shadow_height, shadowAnchorPosition)
130
- return new google.maps.Marker({position: markerLatLng, map: @map, icon: markerImage, title: args.marker_title, draggable: args.marker_draggable, shadow: shadowImage})
126
+ #default behavior
127
+ #calculate MarkerImage anchor location
128
+ imageAnchorPosition = @createImageAnchorPosition args.marker_anchor
129
+ shadowAnchorPosition = @createImageAnchorPosition args.shadow_anchor
130
+ #create or retrieve existing MarkerImages
131
+ markerImage = @createOrRetrieveImage(args.marker_picture, args.marker_width, args.marker_height, imageAnchorPosition)
132
+ shadowImage = @createOrRetrieveImage(args.shadow_picture, args.shadow_width, args.shadow_height, shadowAnchorPosition)
133
+ defaultOptions = {position: markerLatLng, map: @map, icon: markerImage, title: args.marker_title, draggable: args.marker_draggable, shadow: shadowImage}
134
+ mergedOptions = @mergeObjectWithDefault @markers_conf.raw, defaultOptions
135
+ return new google.maps.Marker mergedOptions
131
136
 
132
137
  #checks if obj is included in arr Array and returns the position or false
133
138
  includeMarkerImage : (arr, obj) ->
@@ -212,16 +212,17 @@ module Gmaps4rails
212
212
  unless hash[:map_options].nil?
213
213
  hash[:map_options].each do |option_k, option_v|
214
214
  case option_k.to_sym
215
- when :bounds #particular case
215
+ when :bounds #particular case, render the content unescaped
216
216
  result << "#{map_id}.map_options.#{option_k} = #{option_v};"
217
- when :class
218
- when :container_class
217
+ when :raw #particular case, render the content unescaped
218
+ result << "#{map_id}.map_options.#{option_k} = #{option_v};"
219
+ when :class #do nothing
220
+ when :container_class #do nothing
219
221
  else
220
222
  result << "#{map_id}.map_options.#{option_k} = #{Gmaps4rails.filter option_v};"
221
223
  end
222
224
  end
223
225
  end
224
-
225
226
  result << "#{map_id}.initialize();"
226
227
  end
227
228
 
@@ -234,7 +235,7 @@ module Gmaps4rails
234
235
 
235
236
  content[:options] ||= Array.new
236
237
  content[:options].each do |option_k, option_v|
237
- if option_k == "waypoints"
238
+ if option_k.to_sym == :waypoints
238
239
  waypoints = Array.new
239
240
  option_v.each do |waypoint|
240
241
  waypoints << { "location" => waypoint, "stopover" => true }.to_json
@@ -249,7 +250,11 @@ module Gmaps4rails
249
250
  result << "#{map_id}.#{category} = #{content[:data]};"
250
251
  content[:options] ||= Array.new
251
252
  content[:options].each do |option_k, option_v|
252
- result << "#{map_id}.#{category}_conf.#{option_k} = #{Gmaps4rails.filter option_v};"
253
+ if option_k.to_sym == :raw
254
+ result << "#{map_id}.#{category}_conf.#{option_k} = #{option_v};"
255
+ else
256
+ result << "#{map_id}.#{category}_conf.#{option_k} = #{Gmaps4rails.filter option_v};"
257
+ end
253
258
  end
254
259
  result << "#{map_id}.create_#{category}();"
255
260
  end
@@ -261,7 +266,6 @@ module Gmaps4rails
261
266
  result << "};"
262
267
  if hash[:last_map].nil? || hash[:last_map] == true
263
268
  result << "window.onload = function() { Gmaps.loadMaps(); };"
264
- #result << "window.onload = load_map;"
265
269
  end
266
270
  end
267
271
 
@@ -40,7 +40,8 @@
40
40
  minZoom: null,
41
41
  auto_adjust: true,
42
42
  auto_zoom: true,
43
- bounds: []
43
+ bounds: [],
44
+ raw: {}
44
45
  };
45
46
  this.default_markers_conf = {
46
47
  title: "",
@@ -52,7 +53,8 @@
52
53
  randomize: false,
53
54
  max_random_distance: 100,
54
55
  list_container: null,
55
- offset: 0
56
+ offset: 0,
57
+ raw: {}
56
58
  };
57
59
  this.markers = [];
58
60
  this.boundsObject = null;
@@ -438,7 +440,11 @@
438
440
  };
439
441
  Gmaps4Rails.prototype.mergeObjectWithDefault = function(object1, object2) {
440
442
  var copy_object1, key, value;
441
- copy_object1 = object1;
443
+ copy_object1 = {};
444
+ for (key in object1) {
445
+ value = object1[key];
446
+ copy_object1[key] = value;
447
+ }
442
448
  for (key in object2) {
443
449
  value = object2[key];
444
450
  if (copy_object1[key] == null) {
@@ -74,7 +74,8 @@
74
74
  return new google.maps.LatLngBounds();
75
75
  };
76
76
  Gmaps4RailsGoogle.prototype.createMap = function() {
77
- return new google.maps.Map(document.getElementById(this.map_options.id), {
77
+ var defaultOptions, mergedOptions;
78
+ defaultOptions = {
78
79
  maxZoom: this.map_options.maxZoom,
79
80
  minZoom: this.map_options.minZoom,
80
81
  zoom: this.map_options.zoom,
@@ -84,7 +85,9 @@
84
85
  disableDefaultUI: this.map_options.disableDefaultUI,
85
86
  disableDoubleClickZoom: this.map_options.disableDoubleClickZoom,
86
87
  draggable: this.map_options.draggable
87
- });
88
+ };
89
+ mergedOptions = this.mergeObjectWithDefault(this.map_options.raw, defaultOptions);
90
+ return new google.maps.Map(document.getElementById(this.map_options.id), mergedOptions);
88
91
  };
89
92
  Gmaps4RailsGoogle.prototype.createMarkerImage = function(markerPicture, markerSize, origin, anchor, scaledSize) {
90
93
  return new google.maps.MarkerImage(markerPicture, markerSize, origin, anchor, scaledSize);
@@ -93,16 +96,19 @@
93
96
  return new google.maps.Size(width, height);
94
97
  };
95
98
  Gmaps4RailsGoogle.prototype.createMarker = function(args) {
96
- var imageAnchorPosition, markerImage, markerLatLng, shadowAnchorPosition, shadowImage;
99
+ var defaultOptions, imageAnchorPosition, markerImage, markerLatLng, mergedOptions, shadowAnchorPosition, shadowImage;
97
100
  markerLatLng = this.createLatLng(args.Lat, args.Lng);
98
- if (args.marker_picture && args.rich_marker === null) {
99
- return new google.maps.Marker({
101
+ if (args.marker_picture === "" && args.rich_marker === null) {
102
+ defaultOptions = {
100
103
  position: markerLatLng,
101
104
  map: this.map,
102
105
  title: args.marker_title,
103
106
  draggable: args.marker_draggable
104
- });
105
- } else if (args.rich_marker !== null) {
107
+ };
108
+ mergedOptions = this.mergeObjectWithDefault(this.markers_conf.raw, defaultOptions);
109
+ return new google.maps.Marker(mergedOptions);
110
+ }
111
+ if (args.rich_marker !== null) {
106
112
  return new RichMarker({
107
113
  position: markerLatLng,
108
114
  map: this.map,
@@ -111,20 +117,21 @@
111
117
  flat: args.marker_anchor === null ? false : args.marker_anchor[1],
112
118
  anchor: args.marker_anchor === null ? 0 : args.marker_anchor[0]
113
119
  });
114
- } else {
115
- imageAnchorPosition = this.createImageAnchorPosition(args.marker_anchor);
116
- shadowAnchorPosition = this.createImageAnchorPosition(args.shadow_anchor);
117
- markerImage = this.createOrRetrieveImage(args.marker_picture, args.marker_width, args.marker_height, imageAnchorPosition);
118
- shadowImage = this.createOrRetrieveImage(args.shadow_picture, args.shadow_width, args.shadow_height, shadowAnchorPosition);
119
- return new google.maps.Marker({
120
- position: markerLatLng,
121
- map: this.map,
122
- icon: markerImage,
123
- title: args.marker_title,
124
- draggable: args.marker_draggable,
125
- shadow: shadowImage
126
- });
127
120
  }
121
+ imageAnchorPosition = this.createImageAnchorPosition(args.marker_anchor);
122
+ shadowAnchorPosition = this.createImageAnchorPosition(args.shadow_anchor);
123
+ markerImage = this.createOrRetrieveImage(args.marker_picture, args.marker_width, args.marker_height, imageAnchorPosition);
124
+ shadowImage = this.createOrRetrieveImage(args.shadow_picture, args.shadow_width, args.shadow_height, shadowAnchorPosition);
125
+ defaultOptions = {
126
+ position: markerLatLng,
127
+ map: this.map,
128
+ icon: markerImage,
129
+ title: args.marker_title,
130
+ draggable: args.marker_draggable,
131
+ shadow: shadowImage
132
+ };
133
+ mergedOptions = this.mergeObjectWithDefault(this.markers_conf.raw, defaultOptions);
134
+ return new google.maps.Marker(mergedOptions);
128
135
  };
129
136
  Gmaps4RailsGoogle.prototype.includeMarkerImage = function(arr, obj) {
130
137
  var index, object, _len;
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gmaps4rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -14,7 +14,7 @@ date: 2011-09-07 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: crack
17
- requirement: &2156004400 !ruby/object:Gem::Requirement
17
+ requirement: &2152391800 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,7 +22,7 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2156004400
25
+ version_requirements: *2152391800
26
26
  description: ! 'Enables easy display of items (taken from a Rails 3 model) on a Google
27
27
  Maps (JS API V3), OpenLayers, Mapquest and Bing. Geocoding + Directions included.
28
28
  Provides much options: markers customization, infowindows, auto-adjusted zoom, polylines,