+ def ways
+ if not params['ways']
+ raise OSM::APIBadUserInput.new("The parameter ways is required, and must be of the form ways=id[,id[,id...]]")
+ end
+
+ ids = params['ways'].split(',').collect { |w| w.to_i }
+
+ if ids.length == 0
+ raise OSM::APIBadUserInput.new("No ways were given to search for")
+ end
+
+ doc = OSM::API.new.get_xml_doc
+
+ Way.find(ids).each do |way|
+ doc.root << way.to_xml_node
+ end
+
+ render :text => doc.to_s, :content_type => "text/xml"
+ end
+
+ ##
+ # returns all the ways which are currently using the node given in the
+ # :id parameter. note that this used to return deleted ways as well, but
+ # this seemed not to be the expected behaviour, so it was removed.
+ def ways_for_node
+ wayids = WayNode.where(:node_id => params[:id]).collect { |ws| ws.id[0] }.uniq
+
+ doc = OSM::API.new.get_xml_doc
+
+ Way.find(wayids).each do |way|
+ doc.root << way.to_xml_node if way.visible
+ end
+
+ render :text => doc.to_s, :content_type => "text/xml"
+ end