def url
      raise BuildDataMissing, "We have to have markers, paths or center and zoom set when url is called!" unless can_build?
      
      out = "#{API_URL}?"

      params = []
      (REQUIRED_OPTIONS + OPTIONAL_OPTIONS).each do |key|
        value = send(key)
        params << "#{key}=#{URI.escape(value.to_s)}" unless value.nil?
      end
      out += params.join('&')

      params = []
      grouped_markers.each_pair do |marker_options_as_url_params, markers|
        markers_locations = markers.map { |m| m.location_to_url }.join('|')
        params << "markers=#{marker_options_as_url_params}|#{markers_locations}"
      end
      out += "&#{params.join('&')}" unless params.empty?
      
      params = []
      paths.each {|path| params << path.url_params}
      out += "&#{params.join('&')}" unless params.empty?

      out
    end
def url
      raise BuildDataMissing, "We have to have markers, paths or center and zoom set when url is called!" unless can_build?
      
      out = "#{API_URL}?"

      params = []
      (REQUIRED_OPTIONS + OPTIONAL_OPTIONS).each do |key|
        value = send(key)
        params << "#{key}=#{URI.escape(value.to_s)}" unless value.nil?
      end
      out += params.join('&')

      params = []
      grouped_markers.each_pair do |marker_options_as_url_params, markers|
        markers_locations = markers.map { |m| m.location_to_url }.join('|')
        params << "markers=#{marker_options_as_url_params}|#{markers_locations}"
      end
      out += "&#{params.join('&')}" unless params.empty?
      
      params = []
      paths.each {|path| params << path.url_params}
      out += "&#{params.join('&')}" unless params.empty?

      out
    end
Creates a new Map object

 <tt>:options</tt>::   The options available are the same as described in
                       Google's API documentation[http://code.google.com/apis/maps/documentation/staticmaps/#Usage].
                       In short, valid options are:
                       <tt>:size</tt>::      The size of the map. Can be a "wxh", [w,h] or {:width => x, :height => y}
                       <tt>:sensor</tt>::    Set to true if your application is using a sensor. See the API doc.
                       <tt>:center</tt>::    The center point of your map. Optional if you add markers or path to the map
                       <tt>:zoom</tt>::      The zoom level you want, also optional as center
                       <tt>:format</tt>::    Defaults to png
                       <tt>:maptype</tt>::   Defaults to roadmap
                       <tt>:mobile</tt>::    Returns map tiles better suited for mobile devices with small screens.
                       <tt>:language</tt>::  The language used in the map


 Builds up a URL representing the state of this Map object