]> 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 e88643588d36d0b7255814c07cfa9d4ab4f789c3..875a28340364e38a5ae5222a75d45b1d673687a8 100644 (file)
@@ -51,7 +51,7 @@ by the OpenStreetMap project and it's contributors.
 <% 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 %>
@@ -72,8 +72,8 @@ by the OpenStreetMap project and it's contributors.
 <% end %>
 <% end %>
 
-<script type="text/javascript" src="/openlayers/OpenLayers.js"></script>
-<script type="text/javascript" src="/openlayers/OpenStreetMap.js"></script>
+<%= javascript_include_tag '/openlayers/OpenLayers.js' %>
+<%= javascript_include_tag '/openlayers/OpenStreetMap.js' %>
 <%= javascript_include_tag 'map.js' %>
 
 
@@ -114,11 +114,66 @@ by the OpenStreetMap project and it's contributors.
     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());
   }