2 <%= error_messages_for 'user' %>
3 <%= start_form_tag :controller => 'user', :action => 'edit', :display_name => @user.display_name %>
5 <tr><td>Name</td><td><%= @user.email %></td></tr>
6 <tr><td>Mapper since</td><td><%= @user.creation_time %> (<%= time_ago_in_words(@user.creation_time) %> ago)</td></tr>
7 <tr><td>Display Name</td><td><%= text_field :user, :display_name, :value => @user.display_name %></td></tr>
8 <tr id="homerow" <% unless @user.home_lat and @user.home_lon %> class="nohome" <%end%> ><td>Your home</td><td><em class="message">You have not entered your home location.</em><span class="location">Latitude: <%= text_field :user, :home_lat, :value => @user.home_lat, :size => 20, :id => "home_lat" %> Longitude <%= text_field :user, :home_lon, :value => @user.home_lon, :size => 20, :id => "home_lon" %></span> </td></tr>
9 <tr><td valign="top">Description</td><td><%= text_area :user, :description, :value => @user.description, :class => "editDescription" %></td></tr>
11 <%= submit_tag 'Save Changes' %>
14 <% nearest_str = "" %>
15 <% if @user.home_lat and @user.home_lon %>
16 <h2>Users in your area</h2>
18 <% if @user.nearby.empty? %>
19 There are no users who admit to mapping in your area. Better go out and spread the word about OSM!
22 <p>These users are mapping in your area:</p>
28 <% @user.nearby(1,1).each do |nearby| %>
29 <% nearest_str = "nearest.push( { 'display_name' : '#{nearby.display_name}', 'home_lat' : #{nearby.home_lat}, 'home_lon' : #{nearby.home_lon} } )" %>
32 <td><%= link_to nearby.display_name, :controller => 'user', :action => 'view', :display_name => nearby.display_name %></td>
33 <td><%= link_to 'send message', :controller => 'message', :action => 'new', :display_name => nearby.display_name %></td>
41 <script type="text/javascript">
42 var nearest = [], friends = [];
48 <div id="map" style="border: 1px solid black; position: relative; width : 90%; height : 300px;">
49 <h3>Click on the map to (re)set your location</h3>
52 <% if @user.home_lat and @user.home_lon %>
54 <% mlon = @user.home_lon %>
55 <% mlat = @user.home_lat %>
56 <% lon = @user.home_lon %>
57 <% lat = @user.home_lat %>
59 <script type="text/javascript">
60 var mlat = <%= mlat %>;
61 var mlon = <%= mlon %>;
64 <% lon = params['lon'] || '-0.1' %>
65 <% lat = params['lat'] || '51.5' %>
66 <% zoom = params['zoom'] || '4' %>
71 <script type="text/javascript">
74 var zoom = <%= zoom %>;
75 var PI = 3.14159265358979323846;
79 <% if params['scale'] and params['scale'].length > 0 then %>
80 zoom = Math.log(360.0/(( <% print params['scale'].to_f() %> ) * 512.0)) / Math.log(2.0);
83 lon = lon * 20037508.34 / 180;
84 lat = Math.log(Math.tan( (90 + lat) * PI / 360)) / (PI / 180);
85 lat = lat * 20037508.34 / 180;
87 mlon = mlon * 20037508.34 / 180;
88 mlat = Math.log(Math.tan( (90 + mlat) * PI / 360)) / (PI / 180);
89 mlat = mlat * 20037508.34 / 180;
93 <script type="text/javascript" src="/javascripts/OpenLayers.js"></script>
95 <script type="text/javascript">
97 var map, layer, markers, marker;
100 function mercator2lonlat( merc ) {
101 var lon_deg = (merc.lon / 20037508.34) * 180;
102 var lat_deg = (merc.lat / 20037508.34) * 180;
103 var PI = 3.14159265358979323846;
104 lat_deg = 180/PI * (2 * Math.atan(Math.exp(lat_deg * PI / 180)) - PI / 2);
105 return new OpenLayers.LonLat(lon_deg,lat_deg);
108 function lonlat2mercator( ll ) {
109 var lon = ll.lon * 20037508.34 / 180;
110 var lat = Math.log(Math.tan( (90 + ll.lat) * PI / 360)) / (PI / 180);
111 lat = lat * 20037508.34 / 180;
112 return new OpenLayers.LonLat(lon,lat);
117 OpenLayers.Util.onImageLoadError = function() {
118 this.src = "http://www.openstreetmap.org/javascripts/img/404.png";
120 map = new OpenLayers.Map( "map",
121 {maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34), maxZoomLevel:18, maxResolution:156543, units:'meters', projection: "EPSG:41001"} );
122 layer = new OpenLayers.Layer.LikeGoogle( "Mapnik", "http://tile.openstreetmap.org/", {type:'png'} );
124 layer = new OpenLayers.Layer.LikeGoogle( "Osmarender", "http://dev.openstreetmap.org/~ojw/Tiles/tile.php/", {type:'png'} );
129 markers = new OpenLayers.Layer.Markers("markers");
130 map.addLayer(markers);
133 marker = new OpenLayers.Marker(new OpenLayers.LonLat(mlon,mlat));
134 markers.addMarker(marker);
137 var near_icon = OpenLayers.Marker.defaultIcon();
138 near_icon.url = OpenLayers.Util.getImagesLocation() + "marker-green.png";;
139 var i = nearest.length;
141 markers.addMarker( new OpenLayers.Marker( lonlat2mercator( new OpenLayers.LonLat( nearest[i].home_lon, nearest[i].home_lat ) ), near_icon ) );
144 map.addControl(new OpenLayers.Control.LayerSwitcher());
145 map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
147 map.events.register("click", map, setHome);
150 function setHome( e ) {
151 var lonlat = map.getLonLatFromViewPortPx(e.xy)
153 var lon_deg = (lonlat.lon / 20037508.34) * 180;
154 var lat_deg = (lonlat.lat / 20037508.34) * 180;
155 var PI = 3.14159265358979323846;
156 lat_deg = 180/PI * (2 * Math.atan(Math.exp(lat_deg * PI / 180)) - PI / 2);
157 var homerow = document.getElementById( 'homerow' );
158 var home_lat = document.getElementById( 'home_lat' );
159 var home_lon = document.getElementById( 'home_lon' );
160 homerow.className = '';
161 home_lat.value = lat_deg;
162 home_lon.value = lon_deg;
164 markers.removeMarker(marker);
166 marker = new OpenLayers.Marker(lonlat);
167 markers.addMarker(marker);
169 window.onload = init;
174 <% if @user.data_public? %>
175 All your edits are public.
177 Currently your edits are anonymous and people can't find out where you are located. To show what you edited and allow people to contact you through the website, click the button below. This action cannot be reversed.
179 <%= start_form_tag :controller => 'user', :action => 'go_public'%>
180 <%= submit_tag 'Make all my edits public, forever' %>