def url
raise MissingArgument.new("Size must be set before a url can be generated for Map.") if !size || !size[0] || !size[1]
raise MissingArgument.new("Key must be set before a url can be generated for Map.") if !key
if !(markers && markers.size > 1)
raise MissingArgument.new("Center must be set before a url can be generated for Map (or multiple markers can be specified).") if !center
raise MissingArgument.new("Zoom must be set before a url can be generated for Map (or multiple markers can be specified).") if !zoom
end
raise "Google will not display more than #{MAXIMUM_MARKERS} markers." if markers && markers.size > MAXIMUM_MARKERS
parameters = {}
parameters[:size] = "#{size[0]}x#{size[1]}"
parameters[:key] = "#{key}"
parameters[:map_type] = "#{map_type}" if map_type
parameters[:center] = "#{center[0]},#{center[1]}" if center
parameters[:zoom] = "#{zoom}" if zoom
parameters[:markers] = "#{markers_url_fragment}" if markers_url_fragment
parameters = parameters.to_a.sort { |a, b| a[0].to_s <=> b[0].to_s }
parameters = parameters.collect { |parameter| "#{parameter[0]}=#{parameter[1]}" }
parameters = parameters.join '&'
x = "http://maps.google.com/staticmap?#{parameters}"
raise "Google doesn't like the url to be longer than #{MAXIMUM_URL_SIZE} characters. Try fewer or less precise markers." if x.size > MAXIMUM_URL_SIZE
return x
end