RT# 81730 - fixed XMLHttpRequest async issue, and fixed changed .gov api link.
authorChristopher Burger <burgerc@freeside.biz>
Fri, 16 Nov 2018 14:09:13 +0000 (09:09 -0500)
committerChristopher Burger <burgerc@freeside.biz>
Fri, 16 Nov 2018 14:09:13 +0000 (09:09 -0500)
httemplate/misc/openmap.html
httemplate/misc/xmlhttp-censustract.html

index 73f1071..7cbe3db 100644 (file)
      <input type=hidden id="censustract" value="">
    </td>
    <td>
      <input type=hidden id="censustract" value="">
    </td>
    <td>
-     <div id="mapid" style="width: 600px; height: 600px;"></div>
+     <div id="mapid" style="width: 600px; height: 600px;">Retrieving Map.</div>
    </td>
   </tr>
  </table>
 
   <script>
    </td>
   </tr>
  </table>
 
   <script>
-    var mymap = L.map('mapid').setView(getLatLong('<%$loc%>'), 15);
-    var popup = L.popup();
-    var mainLayer = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
-        maxZoom: 19,
-        attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
-    }).addTo(mymap);
-    var markersLayer = new L.LayerGroup();
-    mymap.addLayer(markersLayer);
 
 
-    function onMapClick(e) {
-      markersLayer.clearLayers();
-      var marker = L.marker([e.latlng.lat, e.latlng.lng]);
-      marker.bindPopup("You selected (" + e.latlng.lat + " , " + e.latlng.lng + ")").openPopup();
-      markersLayer.addLayer(marker);
-      getCensusTract(e.latlng.lat, e.latlng.lng);
-    }
+    var url = 'http://nominatim.openstreetmap.org/search?format=json&limit=1&q=<%$loc%>';
+    $.getJSON(url,function(data){
+      var latlong = [data[0].lat, data[0].lon];
+      var mymap = L.map('mapid').setView(latlong, 15);
+      var popup = L.popup();
+      var mainLayer = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
+        maxZoom: 19,
+        attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
+      }).addTo(mymap);
+      var markersLayer = new L.LayerGroup();
+      mymap.addLayer(markersLayer);
 
 
-    mymap.on('click', onMapClick);
+      function onMapClick(e) {
+       markersLayer.clearLayers();
+       var marker = L.marker([e.latlng.lat, e.latlng.lng]);
+       marker.bindPopup("You selected (" + e.latlng.lat + " , " + e.latlng.lng + ")").openPopup();
+       markersLayer.addLayer(marker);
+       document.getElementById("mycensustract").innerHTML = "Retrieving census tract...";
+       getCensusTract(e.latlng.lat, e.latlng.lng);
+      }
 
 
-    function Get(yourUrl){
-      var Httpreq = new XMLHttpRequest(); // a new request
-      Httpreq.open("GET",yourUrl,false);
-      Httpreq.send();
-      return Httpreq.responseText;          
-    }
+      mymap.on('click', onMapClick);
 
 
-    function getLatLong(loc) {
-        var url = 'http://nominatim.openstreetmap.org/search?format=json&limit=1&q=' + loc;
-        var json_obj = JSON.parse(Get(url));
-        return [json_obj[0].lat, json_obj[0].lon];
-    }
+      function getCensusTract(lat, lon) {
+       var url = 'xmlhttp-censustract.html?lat=' + lat + '&lon=' + lon + '&census_year=<%$census_year%>';
+       $.getJSON(url,function(data){
+         var tract = (data.Block.FIPS.substr(0, 11) / 100).toFixed(2);
+         document.getElementById("mycensustract").innerHTML = tract;
+       });
+      }
 
 
-    function getCensusTract(lat, lon) {
-        var url = 'xmlhttp-censustract.html?lat=' + lat + '&lon=' + lon + '&census_year=<%$census_year%>';
-        var json_obj = JSON.parse(Get(url));
-        var tract = (json_obj.Block.FIPS.substr(0, 11) / 100).toFixed(2);
-        document.getElementById("mycensustract").innerHTML = tract;
-    }
+    });
 
     function changeMainDiv(lat,lng) {
           window.opener.document.getElementById("newcensustract").innerHTML = document.getElementById("mycensustract").innerHTML;
 
     function changeMainDiv(lat,lng) {
           window.opener.document.getElementById("newcensustract").innerHTML = document.getElementById("mycensustract").innerHTML;
index 8a76860..985fb90 100644 (file)
@@ -6,7 +6,9 @@ my $DEBUG = 0;
 my $conf = new FS::Conf;
 
 my $return = {};
 my $conf = new FS::Conf;
 
 my $return = {};
-my $url = "http://data.fcc.gov/api/block/find?format=json&censusYear=" . $cgi->param('census_year') . "&latitude=" . $cgi->param('lat') . "&longitude=" . $cgi->param('lon');
+
+## new api link, see doc https://geo.fcc.gov/api/census/
+my $url = "https://geo.fcc.gov/api/census/block/find?format=json&censusYear=" . $cgi->param('census_year') . "&latitude=" . $cgi->param('lat') . "&longitude=" . $cgi->param('lon');
 
 use LWP::Simple;
 my $return = get $url;
 
 use LWP::Simple;
 my $return = get $url;