Add relation browsing:

* Improve map to also work for relations
 * Add display of relations (view)
 * Add relation members display
 * add new view to browse_controller
This commit is contained in:
Christopher Schmidt 2008-04-20 14:24:42 +00:00
parent e03605929b
commit e414d10aa1
6 changed files with 52 additions and 6 deletions

View file

@ -2,6 +2,21 @@ class BrowseController < ApplicationController
before_filter :authorize_web
layout 'site'
def relation_view
begin
@relation = Relation.find(params[:id])
@name = @relation.tags['name'].to_s
if @name.length == 0:
@name = "#" + @relation.id.to_s
end
@title = 'Relation | ' + (@name)
rescue ActiveRecord::RecordNotFound
render :nothing => true, :status => :not_found
end
end
def way_view
begin
@way = Way.find(params[:id])

View file

@ -9,17 +9,25 @@
var obj_type = '<%= type %>';
var obj_id = <%= id %>;
var url = "/api/<%= "#{API_VERSION}" %>/<%= type %>/<%= id %>";
if (obj_type == "way") {
if (obj_type != "node") {
url += "/full";
}
var map = createMap('small_map', {controls: [new OpenLayers.Control.Navigation()]});
var osm_layer = new OpenLayers.Layer.GML("OSM", url, {format: OpenLayers.Format.OSM, projection: new OpenLayers.Projection("EPSG:4326")});
osm_layer.events.register("loadend", osm_layer, function() {
$("loading").innerHTML = "";
this.map.zoomToExtent(this.features[0].geometry.getBounds());
var center = getMapCenter();
$("larger_map").href = '/?lat='+center.lat+'&lon='+center.lon+'&zoom='+this.map.getZoom();
$("larger_map").innerHTML = "View Larger Map";
$("loading").innerHTML = "";
if (this.features.length) {
var extent = this.features[0].geometry.getBounds();
for (var i = 1; i < this.features.length; i++) {
extent.extend(this.features[i].geometry.getBounds());
}
this.map.zoomToExtent(extent);
var center = getMapCenter();
$("larger_map").href = '/?lat='+center.lat+'&lon='+center.lon+'&zoom='+this.map.getZoom();
$("larger_map").innerHTML = "View Larger Map";
} else {
$("small_map").style.display = "none";
}
})
map.addLayer(osm_layer);
osm_layer.loadGML();

View file

@ -0,0 +1,7 @@
<% if member.member.visible %>
<tr>
<td><%= h(member.member.id.to_s) %></td>
<td><%= h(member.member_type) %></td>
<td><%= h(member.member_role) %></td>
</tr>
<% end %>

View file

@ -0,0 +1,11 @@
<% if relation.members.length != 0 %>
<h3>Members</h3>
<table id="keyvalue" cellpadding="3">
<tr>
<th>ID</th>
<th>Type</th>
<th>Role</th>
</tr>
<%= render :partial => 'member', :collection => relation.relation_members %>
</table>
<% end %>

View file

@ -1,4 +1,5 @@
<% if tags.length != 0 %>
<h3>Tags</h3>
<table id="keyvalue" cellpadding="3">
<tr>
<th>Key</th>

View file

@ -0,0 +1,4 @@
<h2>Relation Browser: <%= h(@name) %></h2>
<%= render :partial => 'common', :locals => { :obj => @relation, :type => "relation" } %>
<%= render :partial => 'tag_table', :locals => { :tags => @relation.tags } %>
<%= render :partial => 'relation_members', :locals => { :relation => @relation } %>