fixes http://trac.openstreetmap.org/ticket/3645 . Can now pass in show_other_users...
[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     <%
39     if marker :
40     %>
41     marker = addMarkerToMap(
42       new OpenLayers.LonLat(<%= mlon %>, <%= mlat %>)
43       <% if not setting_location : %>
44           , null, '<%=escape_javascript(render(:partial => "popup", :object => @user, :locals => { :type => "your location" })) %>'
45       <% end %>
46     );
47     <%
48     end #endif
49     
50     if setting_location :
51       # We're setting a location. Register for click events during init
52       %> map.events.register("click", map, setHome); <%
53     end
54     
55     if show_other_users :
56       friends = @user.friends.collect { |f| f.befriendee }.select { |f| !f.home_lat.nil? and !f.home_lon.nil? } 
57       nearest = @user.nearby - friends 
58     %>
59     var near_icon = OpenLayers.Marker.defaultIcon();
60     near_icon.url = OpenLayers.Util.getImagesLocation() + "marker-green.png";
61     <% nearest.each do |u| %>
62       addMarkerToMap(new OpenLayers.LonLat(
63         <%= u.home_lon %>, <%= u.home_lat %>), near_icon.clone(),
64         '<%= escape_javascript(render(:partial => "popup", :object => u, :locals => { :type => "nearby mapper" })) %>'
65       );
66     <% end  #next nearby user %>
67
68     var friend_icon = OpenLayers.Marker.defaultIcon();
69     friend_icon.url = OpenLayers.Util.getImagesLocation() + "marker-blue.png";
70     <% friends.each do |u| %>
71       addMarkerToMap(new OpenLayers.LonLat(
72         <%= u.home_lon %>, <%= u.home_lat %>), friend_icon.clone(),
73         '<%= escape_javascript(render(:partial => "popup", :object => u, :locals => { :type => "friend" })) %>'
74       );
75     <%
76       end  #next friend
77     end #endif
78     %>
79
80   }        
81
82   <% if setting_location : %>
83   function setHome( e ) { 
84     closeMapPopup();
85
86     if (document.getElementById('updatehome').checked) {
87       var lonlat = getEventPosition(e);
88
89       document.getElementById('homerow').className = '';
90       document.getElementById('home_lat').value = lonlat.lat;
91       document.getElementById('home_lon').value = lonlat.lon;
92
93       if (marker) {
94         removeMarkerFromMap(marker);
95       }
96
97       marker = addMarkerToMap(lonlat);
98     }
99   }
100   
101   <% end %>
102
103   window.onload = init;
104 // -->
105 </script>