gmaps4rails 0.7.4 → 0.7.5
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/lib/acts_as_gmappable/base.rb +4 -2
- data/lib/hash.rb +4 -0
- data/public/javascripts/gmaps4rails.js +111 -124
- data/test/dummy/app/models/user.rb +3 -2
- data/test/dummy/spec/base/base_spec.rb +1 -1
- metadata +4 -4
| @@ -21,7 +21,7 @@ module Gmaps4rails | |
| 21 21 | 
             
                end
         | 
| 22 22 | 
             
              end  
         | 
| 23 23 |  | 
| 24 | 
            -
              def Gmaps4rails.geocode(address)
         | 
| 24 | 
            +
              def Gmaps4rails.geocode(address, raw = false)
         | 
| 25 25 | 
             
               if address.nil? || address.empty?
         | 
| 26 26 | 
             
                 raise Gmaps4rails::GeocodeInvalidQuery, "You must provide an address"
         | 
| 27 27 | 
             
               else #coordinates are valid
         | 
| @@ -38,12 +38,14 @@ module Gmaps4rails | |
| 38 38 | 
             
                   #logger.debug "Google geocoding. Address: #{address}. Result: #{resp.body}"
         | 
| 39 39 | 
             
                   #check if google went well
         | 
| 40 40 | 
             
                   if parse["status"] == "OK"
         | 
| 41 | 
            +
                     return parse if raw == true
         | 
| 41 42 | 
             
                     array = []
         | 
| 42 43 | 
             
                     parse["results"].each do |result|
         | 
| 43 44 | 
             
                       array << { 
         | 
| 44 45 | 
             
                                  :lat => result["geometry"]["location"]["lat"], 
         | 
| 45 46 | 
             
                                  :lng => result["geometry"]["location"]["lng"],
         | 
| 46 | 
            -
                                  :matched_address => result["formatted_address"] | 
| 47 | 
            +
                                  :matched_address => result["formatted_address"],
         | 
| 48 | 
            +
                                  :bounds => result["geometry"]["bounds"]
         | 
| 47 49 | 
             
                                 }
         | 
| 48 50 | 
             
                     end
         | 
| 49 51 | 
             
                     return array
         | 
    
        data/lib/hash.rb
    CHANGED
    
    | @@ -22,7 +22,11 @@ class Hash | |
| 22 22 | 
             
                  #because map should be initialized first, we must extract possible map_options
         | 
| 23 23 | 
             
                  unless self["map_options"].nil?
         | 
| 24 24 | 
             
                    self["map_options"].each do |option_k, option_v|
         | 
| 25 | 
            +
                      if option_k == "bounds" #particular case
         | 
| 26 | 
            +
                        result << "Gmaps4Rails.map_options.#{option_k} = #{option_v};"
         | 
| 27 | 
            +
                      else
         | 
| 25 28 | 
             
                      result << "Gmaps4Rails.map_options.#{option_k} = #{Gmaps4rails.filter option_v};"
         | 
| 29 | 
            +
                      end
         | 
| 26 30 | 
             
                    end
         | 
| 27 31 | 
             
                  end
         | 
| 28 32 |  | 
| @@ -14,8 +14,9 @@ var Gmaps4Rails = { | |
| 14 14 | 
             
            		zoom : 1,
         | 
| 15 15 | 
             
            		maxZoom: null,
         | 
| 16 16 | 
             
            		minZoom: null,
         | 
| 17 | 
            -
            		auto_adjust : false, | 
| 18 | 
            -
            		auto_zoom: true | 
| 17 | 
            +
            		auto_adjust : false,    //adjust the map to the markers if set to true
         | 
| 18 | 
            +
            		auto_zoom: true,        //zoom given by auto-adjust
         | 
| 19 | 
            +
            		bounds: []            //adjust map to these limits only (not taken into account if auto_adjust == true). Should be filled with SW and NE
         | 
| 19 20 | 
             
            		},				
         | 
| 20 21 |  | 
| 21 22 | 
             
            	//markers + info styling
         | 
| @@ -33,15 +34,11 @@ var Gmaps4Rails = { | |
| 33 34 | 
             
            		},
         | 
| 34 35 |  | 
| 35 36 | 
             
            	//Stored variables
         | 
| 36 | 
            -
            	markers : [],							  //contains all markers | 
| 37 | 
            -
            	 | 
| 38 | 
            -
            	polygons:  | 
| 39 | 
            -
            	 | 
| 40 | 
            -
            	 | 
| 41 | 
            -
            	polyline_objects: [],				//contains processed google.maps.Polyline
         | 
| 42 | 
            -
            	circles: null,              //contains raw data, array of hash
         | 
| 43 | 
            -
            	circle_objects: [],			    //contains processed google.maps.Circle
         | 
| 44 | 
            -
            	info_window : null,
         | 
| 37 | 
            +
            	markers : [],							  //contains all markers. A marker contains the following: {"description": , "longitude": , "title":, "latitude":, "picture": "", "width": "", "length": "", "sidebar": "", "google_object": google_marker}
         | 
| 38 | 
            +
            	bounds_object: null,				//contains current bounds from markers, polylines etc...
         | 
| 39 | 
            +
            	polygons: [], 						  //contains raw data, array of arrays (first element could be a hash containing options)
         | 
| 40 | 
            +
            	polylines: [], 						  //contains raw data, array of arrays (first element could be a hash containing options)
         | 
| 41 | 
            +
            	circles: [],                //contains raw data, array of hash
         | 
| 45 42 | 
             
              markerClusterer: null,			//contains all marker clusterers
         | 
| 46 43 |  | 
| 47 44 | 
             
            	//Polygon Styling
         | 
| @@ -92,15 +89,11 @@ var Gmaps4Rails = { | |
| 92 89 | 
             
            				center: new google.maps.LatLng(this.map_options.center_latitude, this.map_options.center_longitude),
         | 
| 93 90 | 
             
            				mapTypeId: google.maps.MapTypeId[this.map_options.type]
         | 
| 94 91 | 
             
            		});
         | 
| 95 | 
            -
            		// | 
| 96 | 
            -
            		 | 
| 97 | 
            -
             | 
| 98 | 
            -
            		});
         | 
| 99 | 
            -
            		//variable used for Auto-adjust
         | 
| 100 | 
            -
            		this.bounds = new google.maps.LatLngBounds();
         | 
| 101 | 
            -
            		
         | 
| 92 | 
            +
            		//resets sidebar if needed
         | 
| 93 | 
            +
            		this.reset_sidebar_content();
         | 
| 94 | 
            +
            		//launch callbacks if any
         | 
| 102 95 | 
             
            		if(typeof gmaps4rails_callback == 'function') { 
         | 
| 103 | 
            -
             | 
| 96 | 
            +
            			gmaps4rails_callback(); 
         | 
| 104 97 | 
             
            		}
         | 
| 105 98 | 
             
            	},
         | 
| 106 99 |  | 
| @@ -150,7 +143,6 @@ var Gmaps4Rails = { | |
| 150 143 | 
             
            			if (this.exists(this.circles[i].latitude) && this.exists(this.circles[i].longitude))
         | 
| 151 144 | 
             
            			{
         | 
| 152 145 | 
             
            				 center = new google.maps.LatLng(this.circles[i].latitude, this.circles[i].longitude);
         | 
| 153 | 
            -
            				 this.extend_bounds(center);
         | 
| 154 146 | 
             
            				 //always check if a config is given, if not, use defaults
         | 
| 155 147 | 
             
            				 var circle = new google.maps.Circle({
         | 
| 156 148 | 
             
            			   center:        center,
         | 
| @@ -162,7 +154,7 @@ var Gmaps4Rails = { | |
| 162 154 | 
             
            				 radius: 				this.circles[i].radius,
         | 
| 163 155 | 
             
            				 clickable:     false
         | 
| 164 156 | 
             
            			 	});
         | 
| 165 | 
            -
            				this. | 
| 157 | 
            +
            				this.circles[i].google_object = circle;
         | 
| 166 158 | 
             
            				circle.setMap(this.map);
         | 
| 167 159 | 
             
            			}
         | 
| 168 160 | 
             
            		}
         | 
| @@ -171,23 +163,7 @@ var Gmaps4Rails = { | |
| 171 163 | 
             
            	//polygons is an array of arrays. It loops.
         | 
| 172 164 | 
             
            	create_polygons: function(){
         | 
| 173 165 | 
             
            		for (var i = 0; i < this.polygons.length; ++i) {
         | 
| 174 | 
            -
            			 | 
| 175 | 
            -
            	  	if (i==0)
         | 
| 176 | 
            -
            			{
         | 
| 177 | 
            -
            				//Array contain polygon elements
         | 
| 178 | 
            -
            				if (this.polygons[i] instanceof Array) {
         | 
| 179 | 
            -
            					this.create_polygon(i);
         | 
| 180 | 
            -
            				}
         | 
| 181 | 
            -
            				//hashes contain configuration which would be set as default
         | 
| 182 | 
            -
            				else{
         | 
| 183 | 
            -
            					if (this.exists(this.polygons[i].strokeColor)  ) { this.polygons_conf.strokeColor 	= this.polygons[i].strokeColor; 	}
         | 
| 184 | 
            -
            					if (this.exists(this.polygons[i].strokeOpacity)) { this.polygons_conf.strokeOpacity = this.polygons[i].strokeOpacity; }
         | 
| 185 | 
            -
            				  if (this.exists(this.polygons[i].strokeWeight )) { this.polygons_conf.strokeWeight 	= this.polygons[i].strokeWeight; 	}
         | 
| 186 | 
            -
            				  if (this.exists(this.polygons[i].fillColor 		)) { this.polygons_conf.fillColor 		= this.polygons[i].fillColor; 		}
         | 
| 187 | 
            -
            				  if (this.exists(this.polygons[i].fillOpacity 	)) { this.polygons_conf.fillOpacity 	= this.polygons[i].fillOpacity; 	}
         | 
| 188 | 
            -
            				}
         | 
| 189 | 
            -
            			}
         | 
| 190 | 
            -
            			else { this.create_polygon(i); }
         | 
| 166 | 
            +
            			this.create_polygon(i)
         | 
| 191 167 | 
             
            		}
         | 
| 192 168 | 
             
            	},
         | 
| 193 169 |  | 
| @@ -203,7 +179,6 @@ var Gmaps4Rails = { | |
| 203 179 | 
             
            		for (var j = 0; j < this.polygons[i].length; ++j) {
         | 
| 204 180 | 
             
            			var latlng = new google.maps.LatLng(this.polygons[i][j].latitude, this.polygons[i][j].longitude);
         | 
| 205 181 | 
             
            	  	polygon_coordinates.push(latlng);
         | 
| 206 | 
            -
            			this.extend_bounds(latlng);
         | 
| 207 182 | 
             
            			//first element of an Array could contain specific configuration for this particular polygon. If no config given, use default
         | 
| 208 183 | 
             
            			if (j==0) {
         | 
| 209 184 | 
             
            				strokeColor   = this.polygons[i][j].strokeColor  	|| this.polygons_conf.strokeColor;
         | 
| @@ -225,28 +200,14 @@ var Gmaps4Rails = { | |
| 225 200 | 
             
            			 clickable:     false
         | 
| 226 201 | 
             
            		 });
         | 
| 227 202 | 
             
            		//save polygon in list
         | 
| 228 | 
            -
            		this. | 
| 203 | 
            +
            		this.polygons[i].google_object = new_poly;
         | 
| 229 204 | 
             
            		new_poly.setMap(this.map);
         | 
| 230 205 | 
             
            	},
         | 
| 231 206 |  | 
| 232 207 | 
             
            	//polylines is an array of arrays. It loops.
         | 
| 233 208 | 
             
            	create_polylines: function(){
         | 
| 234 209 | 
             
            		for (var i = 0; i < this.polylines.length; ++i) {
         | 
| 235 | 
            -
             | 
| 236 | 
            -
            	  	if (i==0)
         | 
| 237 | 
            -
            			{
         | 
| 238 | 
            -
            				//Array contain polyline elements
         | 
| 239 | 
            -
            				if (this.polylines[i] instanceof Array) {
         | 
| 240 | 
            -
            					this.create_polyline(i);
         | 
| 241 | 
            -
            				}
         | 
| 242 | 
            -
            				//hashes contain configuration which would be set as default
         | 
| 243 | 
            -
            				else{
         | 
| 244 | 
            -
            					if (this.exists(this.polylines[i].strokeColor)   ) { this.polylines_conf.line_strokeColor 	 = this.polygons[i].strokeColor; 	}
         | 
| 245 | 
            -
            					if (this.exists(this.polylines[i].strokeOpacity) ) { this.polylines_conf.line_strokeOpacity = this.polygons[i].strokeOpacity;}
         | 
| 246 | 
            -
            				  if (this.exists(this.polylines[i].strokeWeight)  ) { this.polylines_conf.line_strokeWeight  = this.polygons[i].strokeWeight; }
         | 
| 247 | 
            -
            				}
         | 
| 248 | 
            -
            			}
         | 
| 249 | 
            -
            			else { this.create_polyline(i); }
         | 
| 210 | 
            +
            		  this.create_polyline(i);
         | 
| 250 211 | 
             
            		}
         | 
| 251 212 | 
             
            	},
         | 
| 252 213 |  | 
| @@ -265,7 +226,6 @@ var Gmaps4Rails = { | |
| 265 226 | 
             
            				//loop through every point in the array
         | 
| 266 227 | 
             
            				for (var k = 0; k < decoded_array.length; ++k) {		
         | 
| 267 228 | 
             
            					polyline_coordinates.push(decoded_array[k]);
         | 
| 268 | 
            -
            					this.extend_bounds(decoded_array[k]);
         | 
| 269 229 | 
             
            					polyline_coordinates.push(decoded_array[k]);				
         | 
| 270 230 | 
             
            				}
         | 
| 271 231 | 
             
            			}
         | 
| @@ -282,7 +242,6 @@ var Gmaps4Rails = { | |
| 282 242 | 
             
            				{	
         | 
| 283 243 | 
             
            					var latlng = new google.maps.LatLng(this.polylines[i][j].latitude, this.polylines[i][j].longitude);
         | 
| 284 244 | 
             
            			  	polyline_coordinates.push(latlng);
         | 
| 285 | 
            -
            					this.extend_bounds(latlng);
         | 
| 286 245 | 
             
            				}
         | 
| 287 246 | 
             
            			}
         | 
| 288 247 | 
             
            		}
         | 
| @@ -295,17 +254,9 @@ var Gmaps4Rails = { | |
| 295 254 | 
             
            			 clickable:     false
         | 
| 296 255 | 
             
            		 });
         | 
| 297 256 | 
             
            		//save polyline
         | 
| 298 | 
            -
            		this. | 
| 257 | 
            +
            		this.polylines[i].google_object = new_poly;
         | 
| 299 258 | 
             
            		new_poly.setMap(this.map);
         | 
| 300 259 | 
             
            	},
         | 
| 301 | 
            -
            	
         | 
| 302 | 
            -
            	//Two options:
         | 
| 303 | 
            -
            	// 1- processing == "rails_model"  && builder = model_name
         | 
| 304 | 
            -
            	// 2- processing == "json"    && builder = json in format: [{"description": , "longitude": , "title":, "latitude":, "picture": "", "width": "", "length": ""}]
         | 
| 305 | 
            -
            	create_markers: function() {
         | 
| 306 | 
            -
            		this.setup_Markers();
         | 
| 307 | 
            -
            		this.adjust();
         | 
| 308 | 
            -
            	},
         | 
| 309 260 |  | 
| 310 261 | 
             
              // clear markers
         | 
| 311 262 | 
             
              clear_markers: function(){
         | 
| @@ -321,16 +272,20 @@ var Gmaps4Rails = { | |
| 321 272 | 
             
              replace_markers: function(new_markers){
         | 
| 322 273 | 
             
            	  //reset previous markers
         | 
| 323 274 | 
             
            		this.markers = new Array;
         | 
| 324 | 
            -
            		//reset  | 
| 325 | 
            -
            		this. | 
| 275 | 
            +
            		//reset current bounds
         | 
| 276 | 
            +
            		this.google_bounds = new google.maps.LatLngBounds();
         | 
| 326 277 | 
             
            		//reset sidebar content if exists
         | 
| 278 | 
            +
            		this.reset_sidebar_content();
         | 
| 279 | 
            +
            		//add new markers
         | 
| 280 | 
            +
            		this.add_markers(new_markers);
         | 
| 281 | 
            +
              },
         | 
| 282 | 
            +
             | 
| 283 | 
            +
            	reset_sidebar_content: function(){
         | 
| 327 284 | 
             
            		if (this.markers_conf.list_container != null ){
         | 
| 328 285 | 
             
            			var ul = document.getElementById(this.markers_conf.list_container);
         | 
| 329 286 | 
             
            			ul.innerHTML = "";
         | 
| 330 287 | 
             
            		}
         | 
| 331 | 
            -
             | 
| 332 | 
            -
            		this.add_markers(new_markers);
         | 
| 333 | 
            -
              },
         | 
| 288 | 
            +
            	},
         | 
| 334 289 |  | 
| 335 290 | 
             
            	//add new markers to on an existing map (beware, it doesn't check duplicates)
         | 
| 336 291 | 
             
              add_markers: function(new_markers){
         | 
| @@ -339,15 +294,19 @@ var Gmaps4Rails = { | |
| 339 294 | 
             
            	  //update the list of markers to take into account
         | 
| 340 295 | 
             
                this.markers = this.markers.concat(new_markers);
         | 
| 341 296 | 
             
                //put markers on the map
         | 
| 342 | 
            -
                this. | 
| 343 | 
            -
            		//adjust map
         | 
| 344 | 
            -
            		this.adjust();
         | 
| 297 | 
            +
                this.create_markers();
         | 
| 345 298 | 
             
              },
         | 
| 346 299 |  | 
| 347 | 
            -
             | 
| 348 | 
            -
             | 
| 349 | 
            -
             | 
| 350 | 
            -
             | 
| 300 | 
            +
            	//creates, clusterizes and adjusts map 
         | 
| 301 | 
            +
            	create_markers: function() {
         | 
| 302 | 
            +
            		this.create_google_markers_from_markers();
         | 
| 303 | 
            +
            		this.clusterize();
         | 
| 304 | 
            +
            		this.adjust_map_to_bounds();
         | 
| 305 | 
            +
            	},
         | 
| 306 | 
            +
            	
         | 
| 307 | 
            +
            	//create google.maps Markers from data provided by user
         | 
| 308 | 
            +
            	create_google_markers_from_markers: function(){
         | 
| 309 | 
            +
            		for (var i = 0; i < this.markers.length; ++i) {
         | 
| 351 310 | 
             
            		  //check if the marker has not already been created
         | 
| 352 311 | 
             
            			if (!this.exists(this.markers[i].google_object)) {
         | 
| 353 312 | 
             
            			   //test if value passed or use default 
         | 
| @@ -367,7 +326,6 @@ var Gmaps4Rails = { | |
| 367 326 | 
             
            				 }
         | 
| 368 327 |  | 
| 369 328 | 
             
            				 var myLatLng = new google.maps.LatLng(Lat, Lng); 
         | 
| 370 | 
            -
            				 this.extend_bounds(myLatLng);
         | 
| 371 329 |  | 
| 372 330 | 
             
            				 // Marker sizes are expressed as a Size of X,Y
         | 
| 373 331 | 
             
            		 		 if (marker_picture == "")
         | 
| @@ -379,18 +337,26 @@ var Gmaps4Rails = { | |
| 379 337 | 
             
            					}
         | 
| 380 338 | 
             
            					//save object
         | 
| 381 339 | 
             
            					this.markers[i].google_object = ThisMarker; 
         | 
| 382 | 
            -
            					//add infowindowstuff  | 
| 383 | 
            -
            					this. | 
| 340 | 
            +
            					//add infowindowstuff if enabled
         | 
| 341 | 
            +
            					this.create_info_window(this.markers[i]);
         | 
| 342 | 
            +
            					//create sidebar if enabled
         | 
| 343 | 
            +
            					this.create_sidebar(this.markers[i]);
         | 
| 384 344 | 
             
            			 }
         | 
| 385 345 | 
             
            		}
         | 
| 386 | 
            -
            		 | 
| 346 | 
            +
            		
         | 
| 387 347 | 
             
            	},
         | 
| 388 348 |  | 
| 389 | 
            -
            	 | 
| 349 | 
            +
            	// creates infowindows
         | 
| 350 | 
            +
            	create_info_window: function(marker_container){
         | 
| 390 351 | 
             
            		//create the infowindow
         | 
| 391 352 | 
             
            		var info_window = new google.maps.InfoWindow({content: marker_container.description });
         | 
| 392 353 | 
             
            		//add the listener associated
         | 
| 393 354 | 
             
            		google.maps.event.addListener(marker_container.google_object, 'click', this.openInfoWindow(info_window, marker_container.google_object));
         | 
| 355 | 
            +
             | 
| 356 | 
            +
            	},
         | 
| 357 | 
            +
            	
         | 
| 358 | 
            +
            	//creates sidebar
         | 
| 359 | 
            +
            	create_sidebar: function(marker_container){
         | 
| 394 360 | 
             
            		if (this.markers_conf.list_container)
         | 
| 395 361 | 
             
            		{
         | 
| 396 362 | 
             
            			var ul = document.getElementById(this.markers_conf.list_container);
         | 
| @@ -399,11 +365,19 @@ var Gmaps4Rails = { | |
| 399 365 | 
             
            	    aSel.href = 'javascript:void(0);';
         | 
| 400 366 | 
             
            	    var html = this.exists(marker_container.sidebar) ? marker_container.sidebar : "Marker";
         | 
| 401 367 | 
             
            	    aSel.innerHTML = html;
         | 
| 402 | 
            -
            	    aSel.onclick = this. | 
| 368 | 
            +
            	    aSel.onclick = this.sidebar_element_handler(marker_container.google_object, 'click');
         | 
| 403 369 | 
             
            	    li.appendChild(aSel);
         | 
| 404 370 | 
             
            	    ul.appendChild(li);
         | 
| 405 371 | 
             
            		}
         | 
| 406 372 | 
             
            	},
         | 
| 373 | 
            +
             | 
| 374 | 
            +
            	//moves map to marker clicked + open infowindow
         | 
| 375 | 
            +
              sidebar_element_handler: function(marker, eventType) {
         | 
| 376 | 
            +
                return function() {
         | 
| 377 | 
            +
            			Gmaps4Rails.map.panTo(marker.position);
         | 
| 378 | 
            +
                  google.maps.event.trigger(marker, eventType);
         | 
| 379 | 
            +
                };
         | 
| 380 | 
            +
              },
         | 
| 407 381 |  | 
| 408 382 | 
             
            	openInfoWindow: function(infoWindow, marker) {
         | 
| 409 383 | 
             
                return function() {
         | 
| @@ -417,14 +391,8 @@ var Gmaps4Rails = { | |
| 417 391 | 
             
                };
         | 
| 418 392 | 
             
              },
         | 
| 419 393 |  | 
| 420 | 
            -
             | 
| 421 | 
            -
             | 
| 422 | 
            -
            			Gmaps4Rails.map.panTo(marker.position);
         | 
| 423 | 
            -
                  google.maps.event.trigger(marker, eventType);
         | 
| 424 | 
            -
                };
         | 
| 425 | 
            -
              },
         | 
| 426 | 
            -
            	
         | 
| 427 | 
            -
            	setup_Clusterer: function()
         | 
| 394 | 
            +
            	//creates clusters
         | 
| 395 | 
            +
            	clusterize: function()
         | 
| 428 396 | 
             
            	{
         | 
| 429 397 | 
             
            		if (this.markers_conf.do_clustering == true)
         | 
| 430 398 | 
             
            		{
         | 
| @@ -442,11 +410,55 @@ var Gmaps4Rails = { | |
| 442 410 | 
             
            	},
         | 
| 443 411 |  | 
| 444 412 | 
             
            	//to make the map fit the different LatLng points
         | 
| 445 | 
            -
            	 | 
| 446 | 
            -
             | 
| 447 | 
            -
             | 
| 448 | 
            -
             | 
| 449 | 
            -
             | 
| 413 | 
            +
            	adjust_map_to_bounds: function(latlng) {
         | 
| 414 | 
            +
            		
         | 
| 415 | 
            +
            		//FIRST_STEP: retrieve all bounds
         | 
| 416 | 
            +
            		//create the bounds object only if necessary
         | 
| 417 | 
            +
            		if (this.map_options.auto_adjust || this.map_options.bounds != null) {
         | 
| 418 | 
            +
            			this.google_bounds = new google.maps.LatLngBounds();
         | 
| 419 | 
            +
            		}
         | 
| 420 | 
            +
            		
         | 
| 421 | 
            +
            		//if autodjust is true, must get bounds from markers polylines etc...
         | 
| 422 | 
            +
            		if (this.map_options.auto_adjust) {
         | 
| 423 | 
            +
            			//from markers
         | 
| 424 | 
            +
            			for (var i = 0; i <  this.markers.length; ++i) {
         | 
| 425 | 
            +
            	     	this.google_bounds.extend(this.markers[i].google_object.position);
         | 
| 426 | 
            +
            	    }
         | 
| 427 | 
            +
             		  //from polygons:
         | 
| 428 | 
            +
            			for (var i = 0; i <  this.polylines.length; ++i) {
         | 
| 429 | 
            +
            				this.polylines[i].google_object.latLngs.forEach(function(obj1){ obj1.forEach(function(obj2){ Gmaps4Rails.google_bounds.extend(obj2);} );})
         | 
| 430 | 
            +
            			}
         | 
| 431 | 
            +
            			//from polylines:
         | 
| 432 | 
            +
            			for (var i = 0; i <  this.polygons.length; ++i) {
         | 
| 433 | 
            +
            				this.polygons[i].google_object.latLngs.forEach(function(obj1){ obj1.forEach(function(obj2){ Gmaps4Rails.google_bounds.extend(obj2);} );})
         | 
| 434 | 
            +
            			}
         | 
| 435 | 
            +
            			//from circles
         | 
| 436 | 
            +
            			for (var i = 0; i <  this.circles.length; ++i) {
         | 
| 437 | 
            +
            				this.google_bounds.extend(this.circles[i].google_object.getBounds().getNorthEast());
         | 
| 438 | 
            +
            				this.google_bounds.extend(this.circles[i].google_object.getBounds().getSouthWest());
         | 
| 439 | 
            +
            			}		
         | 
| 440 | 
            +
            		}
         | 
| 441 | 
            +
            		//in every case, I've to take into account the bounds set up by the user	
         | 
| 442 | 
            +
            		for (var i = 0; i < this.map_options.bounds.length; ++i) {
         | 
| 443 | 
            +
            			//create points from bounds provided
         | 
| 444 | 
            +
            			var bound = new google.maps.LatLng(this.map_options.bounds[i].lat, this.map_options.bounds[i].lng);
         | 
| 445 | 
            +
            			this.google_bounds.extend(bound);
         | 
| 446 | 
            +
            		}
         | 
| 447 | 
            +
            		
         | 
| 448 | 
            +
            		//SECOND_STEP: ajust the map to the bounds
         | 
| 449 | 
            +
            		if (this.map_options.auto_adjust || this.map_options.bounds.length > 0) {
         | 
| 450 | 
            +
            	
         | 
| 451 | 
            +
            			//if autozoom is false, take user info into account
         | 
| 452 | 
            +
            			if(!this.map_options.auto_zoom) {
         | 
| 453 | 
            +
            				var map_center = this.google_bounds.getCenter();
         | 
| 454 | 
            +
            				this.map_options.center_longitude = map_center.lat();
         | 
| 455 | 
            +
            				this.map_options.center_latitude  = map_center.lng();
         | 
| 456 | 
            +
            				this.map.setCenter(map_center);
         | 
| 457 | 
            +
            			}
         | 
| 458 | 
            +
            			else {
         | 
| 459 | 
            +
            			  this.map.fitBounds(this.google_bounds); 
         | 
| 460 | 
            +
            			}
         | 
| 461 | 
            +
            		}
         | 
| 450 462 | 
             
            	},
         | 
| 451 463 |  | 
| 452 464 | 
             
            	//basic function to check existence of a variable
         | 
| @@ -464,32 +476,7 @@ var Gmaps4Rails = { | |
| 464 476 | 
             
            		return [Lat, Lng];
         | 
| 465 477 | 
             
            	},
         | 
| 466 478 |  | 
| 467 | 
            -
            	// | 
| 468 | 
            -
            	adjust: function(){
         | 
| 469 | 
            -
            		if (this.map_options.auto_adjust) {
         | 
| 470 | 
            -
            			if(this.map_options.auto_zoom) {
         | 
| 471 | 
            -
            				this.map.fitBounds(this.bounds); 
         | 
| 472 | 
            -
            				}
         | 
| 473 | 
            -
            			else {
         | 
| 474 | 
            -
            				var map_center = this.bounds.getCenter();
         | 
| 475 | 
            -
            				this.map_options.center_longitude = map_center.Da;
         | 
| 476 | 
            -
            				this.map_options.center_latitude  = map_center.Ba;
         | 
| 477 | 
            -
            				this.map.setCenter(map_center);
         | 
| 478 | 
            -
            			}
         | 
| 479 | 
            -
            		}
         | 
| 480 | 
            -
            	},
         | 
| 481 | 
            -
            	
         | 
| 482 | 
            -
            	//retrives a value between -1 and 1
         | 
| 479 | 
            +
            	//gives a value between -1 and 1
         | 
| 483 480 | 
             
            	random: function() { return ( Math.random() * 2 -1); }
         | 
| 484 481 |  | 
| 485 | 
            -
            };
         | 
| 486 | 
            -
             | 
| 487 | 
            -
            //marker_clusterer styles
         | 
| 488 | 
            -
            // var styles = [{
         | 
| 489 | 
            -
            //   url: 'http://google-maps-utility-library-v3.googlecode.com/svn/tags/markerclusterer/1.0/images/people35.png',
         | 
| 490 | 
            -
            //   height: 35,
         | 
| 491 | 
            -
            //   width: 35,
         | 
| 492 | 
            -
            //   opt_anchor: [16, 0],
         | 
| 493 | 
            -
            //   opt_textColor: '#ff00ff',
         | 
| 494 | 
            -
            //   opt_textSize: 10
         | 
| 495 | 
            -
            // }];
         | 
| 482 | 
            +
            };
         | 
| @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            class User < ActiveRecord::Base
         | 
| 2 2 | 
             
              acts_as_gmappable
         | 
| 3 | 
            -
             | 
| 3 | 
            +
              
         | 
| 4 4 | 
             
              def gmaps4rails_address
         | 
| 5 5 | 
             
                address
         | 
| 6 6 | 
             
              end
         | 
| @@ -10,6 +10,7 @@ class User < ActiveRecord::Base | |
| 10 10 | 
             
              # end
         | 
| 11 11 | 
             
              #  
         | 
| 12 12 | 
             
              def gmaps4rails_infowindow
         | 
| 13 | 
            -
                "je suis l'infowindow"
         | 
| 13 | 
            +
                "je suis l'infowindow de #{name}"
         | 
| 14 14 | 
             
              end
         | 
| 15 | 
            +
             | 
| 15 16 | 
             
            end
         | 
| @@ -3,7 +3,7 @@ require 'spec_helper' | |
| 3 3 | 
             
            describe "Geocode" do
         | 
| 4 4 |  | 
| 5 5 | 
             
              it "should geocode properly an address" do
         | 
| 6 | 
            -
                Gmaps4rails.geocode("alaska").should == [{: | 
| 6 | 
            +
                Gmaps4rails.geocode("alaska").should == [{:matched_address=>"Alaska, USA", :bounds=>{"northeast"=>{"lng"=>-129.979511, "lat"=>71.441059}, "southwest"=>{"lng"=>172.347846, "lat"=>51.175092}}, :lat=>63.588753, :lng=>-154.4930619}] 
         | 
| 7 7 | 
             
              end
         | 
| 8 8 |  | 
| 9 9 | 
             
              it "should raise an error when address invalid" do
         | 
    
        metadata
    CHANGED
    
    | @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: gmaps4rails
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              hash:  | 
| 4 | 
            +
              hash: 9
         | 
| 5 5 | 
             
              prerelease: false
         | 
| 6 6 | 
             
              segments: 
         | 
| 7 7 | 
             
              - 0
         | 
| 8 8 | 
             
              - 7
         | 
| 9 | 
            -
              -  | 
| 10 | 
            -
              version: 0.7. | 
| 9 | 
            +
              - 5
         | 
| 10 | 
            +
              version: 0.7.5
         | 
| 11 11 | 
             
            platform: ruby
         | 
| 12 12 | 
             
            authors: 
         | 
| 13 13 | 
             
            - Benjamin Roth
         | 
| @@ -16,7 +16,7 @@ autorequire: | |
| 16 16 | 
             
            bindir: bin
         | 
| 17 17 | 
             
            cert_chain: []
         | 
| 18 18 |  | 
| 19 | 
            -
            date: 2011-04- | 
| 19 | 
            +
            date: 2011-04-09 00:00:00 +02:00
         | 
| 20 20 | 
             
            default_executable: 
         | 
| 21 21 | 
             
            dependencies: 
         | 
| 22 22 | 
             
            - !ruby/object:Gem::Dependency 
         |