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