]> git.openstreetmap.org Git - rails.git/blobdiff - app/views/site/index.rhtml
began callback code for feature lookup
[rails.git] / app / views / site / index.rhtml
index 5ca8b0339b0d4af168bea33403b64e6a665ee7d5..875a28340364e38a5ae5222a75d45b1d673687a8 100644 (file)
 <div id="permalink"><a href="/" id="permalinkanchor">Permalink</a></div>
 </div> 
 
+<div id="attribution">
+<table width="100%">
+<tr>
+<td align="left">http://creativecommons.org/licenses/by-sa/2.0/</td>
+<td align="right">http://openstreetmap.org/</td>
+</tr>
+<tr>
+<td colspan="2" align="center">
+Licensed under the Creative Commons Attribution-Share Alike 2.0 license
+by the OpenStreetMap project and it's contributors.
+</td>
+</table>
+</div>
+
 <% if params['mlon'] and params['mlat'] %>
 <% marker = true %>
-<% mlon = params['mlon'] %> 
-<% mlat = params['mlat'] %>
+<% mlon = h(params['mlon']) %> 
+<% mlat = h(params['mlat']) %>
 <% end %>
 
 <% if params['minlon'] and params['minlat'] and params['maxlon'] and params['maxlat'] %>
 <% bbox = true %>
-<% minlon = params['minlon'] %>
-<% minlat = params['minlat'] %>
-<% maxlon = params['maxlon'] %>
-<% maxlat = params['maxlat'] %>
+<% minlon = h(params['minlon']) %>
+<% minlat = h(params['minlat']) %>
+<% maxlon = h(params['maxlon']) %>
+<% maxlat = h(params['maxlat']) %>
 <% end %>
 
 <% if params['lon'] and params['lat'] %>
-<% lon =  params['lon'] %>
-<% lat =  params['lat'] %>
-<% zoom =  params['zoom'] || '5' %>
-<% layers = params['layers'] %>
+<% lon =  h(params['lon']) %>
+<% lat =  h(params['lat']) %>
+<% zoom =  h(params['zoom'] || '5') %>
+<% layers = h(params['layers']) %>
 <% elsif params['mlon'] and params['mlat'] %>
-<% lon = params['mlon'] %> 
-<% lat = params['mlat'] %>
-<% zoom =  params['zoom'] || '12' %>
-<% layers = params['layers'] %>
+<% lon = h(params['mlon']) %> 
+<% lat = h(params['mlat']) %>
+<% zoom =  h(params['zoom'] || '12') %>
+<% layers = h(params['layers']) %>
 <% elsif cookies.key?("location") %>
-<% lon,lat,zoom,layers = cookies["location"].value.first.split(",") %>
+<% lon,lat,zoom,layers = cookies["location"].split(",") %>
 <% elsif @user and !@user.home_lon.nil? and !@user.home_lat.nil? %> 
 <% lon =  @user.home_lon %>
 <% lat =  @user.home_lat %>
 <% else %>
 <% lon =  '-0.1' %>
 <% lat =  '51.5' %>
-<% zoom =  params['zoom'] || '5' %>
-<% layers = params['layers'] %>
+<% zoom =  h(params['zoom'] || '5') %>
+<% layers = h(params['layers']) %>
 <% end %>
 <% end %>
 
-<script type="text/javascript" src="/openlayers/OpenLayers.js"></script>
+<%= javascript_include_tag '/openlayers/OpenLayers.js' %>
+<%= javascript_include_tag '/openlayers/OpenStreetMap.js' %>
 <%= javascript_include_tag 'map.js' %>
 
 
     map.events.register("zoomend", map, updateKey);
 
     map.events.register("moveend", map, updateLocation);
+    map.events.register("changelayer", map, updateLocation);
+    map.events.register("click", map, mapClick);
     updateLocation();
 
     handleResize();
   }
 
+  // Map click results in feature lookup
+  function mapClick(e) {
+      var pos = lonLatToNonSphericalMercator
+                (mercatorToLonLat
+                    (map.getLonLatFromViewPortPx 
+                        ( map.events.getMousePosition(e))));
+
+    // put in the freemap url for the moment. this will be replaced
+    // by a ruby equivalent.
+       /*
+    url= 'http://www.free-map.org.uk/freemap/common/osmlookup.php?'+ 
+            'action=get&x='+pos.lon+'&y='+pos.lat;
+
+    OpenLayers.loadURL(url,/null, null,osmLookupCallback); 
+       */
+  }
+
+  // the feature lookup finds the nearest POI node, or, if no node could
+  // be found, the nearest way
+  /*
+  function osmLookupCallback (xmlHTTP) {
+    var nodes = xmlHTTP.responseXML.getElementsByTagName('node');
+    var ways = xmlHTTP.responseXML.getElementsByTagName('way');
+    var features = (ways.length==1) ? ways:nodes;
+
+    if(features.length==1) {
+      var osm_id = features[0].getElementsByTagName('osm_id')[0].
+                        firstChild.nodeValue;
+      var name = 
+                (xmlHTTP.responseXML.getElementsByTagName('name').length>0) ?
+                    xmlHTTP.responseXML.getElementsByTagName('name')[0].
+                        firstChild.nodeValue: "";
+
+
+      if(this.osm_type=='way' && ways.length==1) {
+                // use openlayers vector layer to highlight way for editing?
+      }
+
+      var description="";
+      var wikipedia="";
+      var ad=false;
+
+      if(xmlHTTP.responseXML.getElementsByTagName('description').length){
+          osmdesc=
+              xmlHTTP.responseXML.getElementsByTagName('description')[0].
+              firstChild.nodeValue;
+
+          description += "<p>"+osmdesc+"</p>";
+       } 
+     }
+  }
+  */
+
   function getPosition() {
     return mercatorToLonLat(map.getCenter());
   }