Don't try and show distances to friends if the user has no
[rails.git] / app / views / user / _map.html.erb
1 <script type="text/javascript">
2   var nearest = [], friends = [];
3   <% friends = @user.friends.collect { |f| f.befriendee } %>
4   <% friends.each do |friend| %>
5     <% if !friend.home_lat.nil? and !friend.home_lon.nil? %>
6       friends.push({
7         display_name : "<%= escape_javascript(friend.display_name) %>",
8         home_lat : <%= friend.home_lat %>,
9         home_lon : <%= friend.home_lon %>
10       });
11     <% end %>
12   <% end %>
13   <% nearest = @user.nearby - friends %>
14   <% nearest.each do |nearby| %>
15     nearest.push({
16       display_name : "<%= escape_javascript(nearby.display_name) %>",
17       home_lat : <%= nearby.home_lat %>,
18       home_lon : <%= nearby.home_lon %>
19     });
20   <% end %>
21 </script>
22
23 <% if @user.home_lat.nil? or @user.home_lon.nil? %>
24   <% lon = h(params['lon'] || '-0.1') %>
25   <% lat = h(params['lat'] || '51.5') %>
26   <% zoom = h(params['zoom'] || '4') %> 
27 <% else %>
28   <% marker = true %>
29   <% mlon = @user.home_lon %> 
30   <% mlat = @user.home_lat %>
31   <% lon =  @user.home_lon %>
32   <% lat =  @user.home_lat %>
33   <% zoom =  '12' %>
34 <% end %>
35
36 <%= javascript_include_tag '/openlayers/OpenLayers.js' %>
37 <%= javascript_include_tag '/openlayers/OpenStreetMap.js' %>
38 <%= javascript_include_tag 'map.js' %>
39
40 <script type="text/javascript">
41   <!--
42   var marker;
43
44   OpenLayers.Lang.setCode("<%= I18n.locale.to_s %>");
45
46   function init(){
47     var centre = new OpenLayers.LonLat(<%= lon %>, <%= lat %>);
48     var zoom = <%= zoom %>;
49
50     <% if params['scale'] and params['scale'].length > 0 then %>
51     zoom = scaleToZoom(<%= params['scale'].to_f() %>);
52     <% end %>
53
54     var map = createMap("map");
55
56     setMapCenter(centre, zoom);
57
58     <% if marker %>
59     marker = addMarkerToMap(new OpenLayers.LonLat(<%= mlon %>, <%= mlat %>), null, "<%= t 'user.map.your location' %>");
60     <% end %>
61
62     var near_icon = OpenLayers.Marker.defaultIcon();
63     near_icon.url = OpenLayers.Util.getImagesLocation() + "marker-green.png";;
64     var i = nearest.length;
65     while( i-- ) {
66       var description = i18n('<%= t 'user.map.nearby mapper'%>', { nearby_user: '<a href="/user/'+nearest[i].display_name+'">'+nearest[i].display_name+'</a>' });
67       var nearmarker = addMarkerToMap(new OpenLayers.LonLat(nearest[i].home_lon, nearest[i].home_lat), near_icon.clone(), description);
68     }
69
70     var friend_icon = OpenLayers.Marker.defaultIcon();
71     friend_icon.url = OpenLayers.Util.getImagesLocation() + "marker-blue.png";;
72     var i = friends.length;
73     while( i-- ) {
74       var description = i18n('<%= t 'user.map.friend'%>', { friend_user: '<a href="/user/'+friends[i].display_name+'">'+friends[i].display_name+'</a>' });
75       var friendmarker = addMarkerToMap(new OpenLayers.LonLat(friends[i].home_lon, friends[i].home_lat), friend_icon.clone(), description);
76     }
77
78     if (document.getElementById('updatehome')) {
79       map.events.register("click", map, setHome);
80     }
81   }        
82
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, null, "<%= t 'user.map.your location' %>");
98     }
99   }
100
101   window.onload = init;
102 // -->
103 </script>
104
105