added a marker to show a location on the map
authorNick Black <nickb@svn.openstreetmap.org>
Tue, 1 May 2007 13:26:27 +0000 (13:26 +0000)
committerNick Black <nickb@svn.openstreetmap.org>
Tue, 1 May 2007 13:26:27 +0000 (13:26 +0000)
app/controllers/geocoder_controller.rb
app/views/geocoder/results.rhtml
app/views/site/index.rhtml

index 6955579ed952e9953db7eb0366d649eaf6d31836..8f0f804412daac1e7d59e55ec930ed3d0f801839 100644 (file)
@@ -23,7 +23,7 @@ class GeocoderController < ApplicationController
           data = resp.body.split(/, /) # lat,long,town,state,zip
           lat = data[0] 
           lon = data[1]
           data = resp.body.split(/, /) # lat,long,town,state,zip
           lat = data[0] 
           lon = data[1]
-          redirect_to "/index.html?lat=#{lat}&lon=#{lon}&zoom=14"
+          redirect_to "/index.html?mlat=#{lat}&mlon=#{lon}&zoom=14"
           return
         end
       elsif postcode.match(/^([A-Z]{1,2}\d+[A-Z]?\s*\d[A-Z]{2})/)
           return
         end
       elsif postcode.match(/^([A-Z]{1,2}\d+[A-Z]?\s*\d[A-Z]{2})/)
@@ -35,7 +35,7 @@ class GeocoderController < ApplicationController
           data = dataline.split(/,/) # easting,northing,postcode,lat,long
           lat = data[3] 
           lon = data[4]
           data = dataline.split(/,/) # easting,northing,postcode,lat,long
           lat = data[3] 
           lon = data[4]
-          redirect_to "/index.html?lat=#{lat}&lon=#{lon}&zoom=14"
+          redirect_to "/index.html?mlat=#{lat}&mlon=#{lon}&zoom=14"
           return
         end
       elsif postcode.match(/^[A-Z]\d[A-Z]\s*\d[A-Z]\d/)
           return
         end
       elsif postcode.match(/^[A-Z]\d[A-Z]\s*\d[A-Z]\d/)
@@ -48,7 +48,7 @@ class GeocoderController < ApplicationController
           data_lon = resp.body.slice(/longt>.*?</)
           lat = data_lat.split(/[<>]/)[1]
           lon = data_lon.split(/[<>]/)[1]
           data_lon = resp.body.slice(/longt>.*?</)
           lat = data_lat.split(/[<>]/)[1]
           lon = data_lon.split(/[<>]/)[1]
-          redirect_to "/index.html?lat=#{lat}&lon=#{lon}&zoom=14"
+          redirect_to "/index.html?mlat=#{lat}&mlon=#{lon}&zoom=14"
           return
         end
       elsif postcode.match(/(GIR 0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW]) [0-9][ABD-HJLNP-UW-Z]{2})
           return
         end
       elsif postcode.match(/(GIR 0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW]) [0-9][ABD-HJLNP-UW-Z]{2})
@@ -59,14 +59,14 @@ class GeocoderController < ApplicationController
             resp = http.get("/geocode?postcode=#{postcode}")
             lat = resp.body.scan(/[4-6][0-9]\.?[0-9]+/)
             lon = resp.body.scan(/[-+][0-9]\.?[0-9]+/)
             resp = http.get("/geocode?postcode=#{postcode}")
             lat = resp.body.scan(/[4-6][0-9]\.?[0-9]+/)
             lon = resp.body.scan(/[-+][0-9]\.?[0-9]+/)
-            redirect_to "/index.html?lat=#{lat}&lon=#{lon}&zoom=14"
+            redirect_to "/index.html?mlat=#{lat}&mlon=#{lon}&zoom=14"
             return
           end
         rescue
           redirect_to "/index.html"
           #redirect to somewhere else
         end
             return
           end
         rescue
           redirect_to "/index.html"
           #redirect to somewhere else
         end
-        redirect_to "/index.html?lat=#{lat}&lon=#{lon}&zoom=14"
+        redirect_to "/index.html?mlat=#{lat}&mlon=#{lon}&zoom=14"
         #redirect_to "/index.html?error=unknown_postcode_or_zip"
       elsif
         # Some other postcode / zip code
         #redirect_to "/index.html?error=unknown_postcode_or_zip"
       elsif
         # Some other postcode / zip code
@@ -83,7 +83,7 @@ class GeocoderController < ApplicationController
           data_lon = resp.body.slice(/lng>.*?</)
           lat = data_lat.split(/[<>]/)[1]
           lon = data_lon.split(/[<>]/)[1]
           data_lon = resp.body.slice(/lng>.*?</)
           lat = data_lat.split(/[<>]/)[1]
           lon = data_lon.split(/[<>]/)[1]
-          redirect_to "/index.html?lat=#{lat}&lon=#{lon}&zoom=14"
+          redirect_to "/index.html?mlat=#{lat}&mlon=#{lon}&zoom=14"
         end
       else
         # Some other postcode / zip file
         end
       else
         # Some other postcode / zip file
index 3d7ee9060eab88ab2be86a80a878ad7abcc555b7..e4a48dd18d96a73510fe822bb5b94ec5f17461de 100644 (file)
@@ -18,7 +18,7 @@
 <%= hsh['countryname'] %>
 </td>
 <td>
 <%= hsh['countryname'] %>
 </td>
 <td>
-<%= link_to('Map', url="/index.html?lat=#{hsh['lat']}&lon=#{hsh['lon']}&zoom=12") %>  
+<%= link_to('Map', url="/index.html?mlat=#{hsh['lat']}&mlon=#{hsh['lon']}&zoom=12") %>  
 </td>
 <td>
 <%= link_to('API', url="/#FIXME") %>  
 </td>
 <td>
 <%= link_to('API', url="/#FIXME") %>  
index 7c1c083b708737fdff70351103e8f55bb5d9a6c8..bed35e36f1386167604840b28b7abfc9ba8be878 100644 (file)
@@ -7,20 +7,31 @@
   <%= submit_tag 'Search' %>
   <%= end_form_tag %>
 
   <%= submit_tag 'Search' %>
   <%= end_form_tag %>
 
-<div id="geocoder-attribution">
-  Geolocation provided by <a href="http://npemap.org.uk/">npemap.org.uk</a>,
-  <a href="http://geocoder.us/">geocoder.us</a>, <a href="http://geocoder.ca/">geocoder.ca</a>
-  and <a href="http://www.geonames.org/">geonames.org</a>
-</div>
-<div id="postcode-helper">
-eg: SW15 6JH, 95472 or H2L4C1
-</div>
-<div id="placename-helper">
-eg:Essen
-</div>
+  <div id="geocoder-attribution">
+    Geolocation provided by <a href="http://npemap.org.uk/">npemap.org.uk</a>,
+    <a href="http://geocoder.us/">geocoder.us</a>, <a href="http://geocoder.ca/">geocoder.ca</a>
+    and <a href="http://www.geonames.org/">geonames.org</a>
+  </div>
+  <div id="postcode-helper">
+    eg: SW15 6JH, 95472 or H2L4C1
+  </div>
+  <div id="placename-helper">
+    eg:Essen
+  </div>
 </div>
 
 </div>
 
-<% if @user and params['lon'].nil? and params['lat'].nil? %> 
+<% if params['mlon'] and params['mlat'] %>
+<% marker = true %>
+<% mlon = params['mlon'] %> 
+<% mlat = params['mlat'] %>
+<% lon =  params['mlon'] %>
+<% lat =  params['mlat']  %>
+<% zoom =  params['zoom'] || '12' %>
+<script type="text/javascript">
+  var mlat = <%= lat %>;
+  var mlon = <%= lon %>;
+</script>
+<% elsif @user and params['lon'].nil? and params['lat'].nil? %> 
 <% lon =  @user.home_lon %>
 <% lat =  @user.home_lat %>
 <% zoom = '10' %>
 <% lon =  @user.home_lon %>
 <% lat =  @user.home_lat %>
 <% zoom = '10' %>
@@ -30,12 +41,16 @@ eg:Essen
 <% zoom =  params['zoom'] || '4' %>
 <% end %>
 
 <% zoom =  params['zoom'] || '4' %>
 <% end %>
 
+
+
 <script type="text/javascript">
 <script type="text/javascript">
-  var lon = <%= lon %>;
   var lat = <%= lat %>;
   var lat = <%= lat %>;
+  var lon = <%= lon %>;
   var zoom = <%= zoom %>;
   var PI = 3.14159265358979323846;
 
   var zoom = <%= zoom %>;
   var PI = 3.14159265358979323846;
 
+
+
   <% if params['scale'] and params['scale'].length > 0 then %>
   zoom = Math.log(360.0/(( <% print params['scale'].to_f() %> ) * 512.0)) / Math.log(2.0);
   <% end %>
   <% if params['scale'] and params['scale'].length > 0 then %>
   zoom = Math.log(360.0/(( <% print params['scale'].to_f() %> ) * 512.0)) / Math.log(2.0);
   <% end %>
@@ -43,13 +58,18 @@ eg:Essen
   lon = lon * 20037508.34 / 180;
   lat = Math.log(Math.tan( (90 + lat) * PI / 360)) / (PI / 180);
   lat = lat * 20037508.34 / 180;
   lon = lon * 20037508.34 / 180;
   lat = Math.log(Math.tan( (90 + lat) * PI / 360)) / (PI / 180);
   lat = lat * 20037508.34 / 180;
+  <% if marker %>
+  mlon = mlon * 20037508.34 / 180;
+  mlat = Math.log(Math.tan( (90 + mlat) * PI / 360)) / (PI / 180);
+  mlat = mlat * 20037508.34 / 180;
+  <%end%>
 
 </script>
 <script type="text/javascript" src="/javascripts/OpenLayers.js"></script>
 
 <script type="text/javascript">
   <!--
 
 </script>
 <script type="text/javascript" src="/javascripts/OpenLayers.js"></script>
 
 <script type="text/javascript">
   <!--
-  var map, layer;
+  var map, layer, markers;
 
 
   function init(){
 
 
   function init(){
@@ -64,7 +84,17 @@ eg:Essen
     layer = new OpenLayers.Layer.LikeGoogle( "Osmarender", "http://dev.openstreetmap.org/~ojw/Tiles/tile.php/", {type:'png'} );
     map.addLayer(layer);
 
     layer = new OpenLayers.Layer.LikeGoogle( "Osmarender", "http://dev.openstreetmap.org/~ojw/Tiles/tile.php/", {type:'png'} );
     map.addLayer(layer);
 
-    map.addControl(new OpenLayers.Control.LayerSwitcher());
+    //Marker stuff
+
+    <% if marker %>
+    markers = new OpenLayers.Layer.Markers("markers");
+    map.addLayer(markers); 
+
+    marker = new OpenLayers.Marker(new OpenLayers.LonLat(mlon,mlat));
+    markers.addMarker(marker);
+    <%end%>
+
+      map.addControl(new OpenLayers.Control.LayerSwitcher());
     map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
 
     map.events.register("moveend", map, function() { 
     map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
 
     map.events.register("moveend", map, function() {