diff --git a/index.html b/index.html index 11ed019..df3898c 100644 --- a/index.html +++ b/index.html @@ -71,7 +71,7 @@ var map = L.map('map').setView([51.505, -0.09], 2); L.tileLayer('http://{s}.tile.cloudmade.com/4be2d4a8b7ae4a5e8ebc0558bb5d7db4/997/256/{z}/{x}/{y}.png', { attribution: 'Map data © OpenStreetMap contributors, CC-BY-SA; Imagery © CloudMade', - maxZoom: 18 + maxZoom: 16 }).addTo(map); // Get url params diff --git a/print.html b/print.html index d875f1f..4eaddc8 100644 --- a/print.html +++ b/print.html @@ -80,26 +80,32 @@ params[tmparr[0]] = tmparr[1]; } - var query = decodeURIComponent(params["q"]); + var query = ""; var map = L.map('map', {zoomControl: false}); //.setView([51.505, -0.09], 13); - L.tileLayer('http://{s}.tile.cloudmade.com/4be2d4a8b7ae4a5e8ebc0558bb5d7db4/997/256/{z}/{x}/{y}.png', { - attribution: query+' map from PrintMaps.com; Data © OpenStreetMap contributors, CC-BY-SA; Imagery © CloudMade', - maxZoom: 18 - }).addTo(map); + + if(params["q"]){ + window.query = decodeURIComponent(params["q"]); + updateTitle(window.query); + } // decode query param - if( params["b0"] && params["b1"] && params["b2"] && params["b3"]){ - updateMap(query,[[decodeURIComponent(params["b0"]), decodeURIComponent(params["b1"])], + if(params["b0"] && params["b1"] && params["b2"] && params["b3"]){ + + // Update the map + updateMap([[decodeURIComponent(params["b0"]), decodeURIComponent(params["b1"])], [decodeURIComponent(params["b2"]), decodeURIComponent(params["b3"])]]); + + // Figure out what the actual name of this place is + var latavg = (parseFloat(decodeURIComponent(params["b0"]))+parseFloat(decodeURIComponent(params["b2"])))/2; + var lonavg = (parseFloat(decodeURIComponent(params["b1"]))+parseFloat(decodeURIComponent(params["b3"])))/2; + doReverseLookup(latavg, lonavg, map.getZoom()); + } else { alert("No boundaries given!"); } - - function updateMap(query,bounds){ - // Generate title - document.title = query + " map"; + function updateMap(bounds){ // Fit map to the GPS boundaries map.fitBounds(bounds); }; @@ -119,6 +125,70 @@ print(); },2000); } + + function doReverseLookup(lat, lon, zoom){ + + // AJAX request for checking where we are + reverseLookup(lat,lon,zoom,function(xmlhttp) { + // Decode response as JSON + response = JSON.parse(xmlhttp.responseText); + + if(response.address){ + console.log(response.address); + console.log(zoom); + var loc = []; + // Set search textbox to where we think we are + if(response.address.suburb && zoom > 14){ + loc.push(response.address.suburb); + } + if(response.address.city && zoom > 9){ + loc.push(response.address.city); + } + else { + if(response.address.county && zoom > 9){ + loc.push(response.address.county+" County"); + } + } + if(response.address.state && zoom >= 8){ + loc.push(response.address.state); + } + if(response.address.country && zoom <= 8){ + loc.push(response.address.country); + } + window.query = loc.join(", "); + updateTitle(window.query); + setTileLayer(window.query); + } + else{ + console.log("No reverse-lookup json"); + setTileLayer(window.query); + } + }); + } + + function reverseLookup(lat,lon,zoom,callback){ + xmlhttp=new XMLHttpRequest(); + request = "http://nominatim.openstreetmap.org/reverse?format=json&lat="+encodeURIComponent(lat)+"&lon="+encodeURIComponent(lon)+"&zoom="+encodeURIComponent(zoom); + xmlhttp.open("GET",request,true); + xmlhttp.send(); + xmlhttp.onreadystatechange = function(){ + if (xmlhttp.readyState==4 && xmlhttp.status==200) { + callback(xmlhttp); + } + }; + } + + function updateTitle(title){ + // Generate title + document.title = query + " map"; + } + + function setTileLayer(query){ + L.tileLayer('http://{s}.tile.cloudmade.com/4be2d4a8b7ae4a5e8ebc0558bb5d7db4/997/256/{z}/{x}/{y}.png', { + attribution: query+' map from PrintMaps.com; Data © OpenStreetMap contributors, CC-BY-SA; Imagery © CloudMade', + maxZoom: 18 + }).addTo(map); + } function halveMap(){