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:
parent
e03605929b
commit
e414d10aa1
6 changed files with 52 additions and 6 deletions
|
@ -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])
|
||||
|
|
|
@ -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();
|
||||
|
|
7
app/views/browse/_member.rhtml
Normal file
7
app/views/browse/_member.rhtml
Normal 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 %>
|
11
app/views/browse/_relation_members.rhtml
Normal file
11
app/views/browse/_relation_members.rhtml
Normal 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 %>
|
|
@ -1,4 +1,5 @@
|
|||
<% if tags.length != 0 %>
|
||||
<h3>Tags</h3>
|
||||
<table id="keyvalue" cellpadding="3">
|
||||
<tr>
|
||||
<th>Key</th>
|
||||
|
|
4
app/views/browse/relation_view.rhtml
Normal file
4
app/views/browse/relation_view.rhtml
Normal 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 } %>
|
Loading…
Add table
Add a link
Reference in a new issue