]> git.openstreetmap.org Git - rails.git/blob - app/views/user/_map.html.erb
Rework notes interface using OpenLayers and rails
[rails.git] / app / views / user / _map.html.erb
1 <%
2 if @user.home_lat.nil? or @user.home_lon.nil?
3   lon = h(params['lon'] || '0') 
4   lat = h(params['lat'] || '20') 
5   zoom = h(params['zoom'] || '1') 
6 else 
7   marker = true
8   mlon = @user.home_lon 
9   mlat = @user.home_lat
10   lon =  @user.home_lon 
11   lat =  @user.home_lat 
12   zoom =  '12'
13 end
14 %>
15
16 <%= javascript_include_tag '/openlayers/OpenLayers.js' %>
17 <%= javascript_include_tag '/openlayers/OpenStreetMap.js' %>
18 <%= javascript_include_tag 'map.js' %>
19
20 <script type="text/javascript">
21   <!--
22   var marker;
23
24   OpenLayers.Lang.setCode("<%= I18n.locale.to_s %>");
25
26   function init(){
27     var centre = new OpenLayers.LonLat(<%= lon %>, <%= lat %>);
28     var zoom = <%= zoom %>;
29
30     <% if params['scale'] and params['scale'].length > 0 then %>
31     zoom = scaleToZoom(<%= params['scale'].to_f() %>);
32     <% end %>
33
34     var map = createMap("map");
35
36     setMapCenter(centre, zoom);
37
38     <% if marker %>
39     marker = addMarkerToMap(
40       new OpenLayers.LonLat(<%= mlon %>, <%= mlat %>)
41       <% if not setting_location %>
42         , null, '<%=escape_javascript(render(:partial => "popup", :object => @user, :locals => { :type => "your location" })) %>'
43       <% end %>
44     );
45     <% end %>
46     
47     <% if setting_location %>
48     map.events.register("click", map, setHome);
49     <% end %>
50     
51     <% if show_other_users %>
52       <% friends = @user.friends.collect { |f| f.befriendee }.select { |f| !f.home_lat.nil? and !f.home_lon.nil? } %>
53       <% nearest = @user.nearby - friends %>
54
55       var near_icon = OpenLayers.Marker.defaultIcon();
56       near_icon.url = OpenLayers.Util.getImagesLocation() + "marker-green.png";
57       <% nearest.each do |u| %>
58         addMarkerToMap(new OpenLayers.LonLat(
59           <%= u.home_lon %>, <%= u.home_lat %>), near_icon.clone(),
60           '<%= escape_javascript(render(:partial => "popup", :object => u, :locals => { :type => "nearby mapper" })) %>'
61         );
62       <% end %>
63
64       var friend_icon = OpenLayers.Marker.defaultIcon();
65       friend_icon.url = OpenLayers.Util.getImagesLocation() + "marker-blue.png";
66       <% friends.each do |u| %>
67         addMarkerToMap(new OpenLayers.LonLat(
68           <%= u.home_lon %>, <%= u.home_lat %>), friend_icon.clone(),
69           '<%= escape_javascript(render(:partial => "popup", :object => u, :locals => { :type => "friend" })) %>'
70         );
71       <% end %>
72     <% end %>
73   }        
74
75   <% if setting_location %>
76   function setHome( e ) { 
77     closeMapPopup();
78
79     if (document.getElementById('updatehome').checked) {
80       var lonlat = getEventPosition(e);
81
82       document.getElementById('homerow').className = '';
83       document.getElementById('home_lat').value = lonlat.lat;
84       document.getElementById('home_lon').value = lonlat.lon;
85
86       if (marker) {
87         removeMarkerFromMap(marker);
88       }
89
90       marker = addMarkerToMap(lonlat);
91     }
92   }
93   <% end %>
94
95   window.onload = init;
96 // -->
97 </script>