geo

IP to country API

async geocode to CSV

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>

    <script type="text/javascript">
    $(function(){

        var csv = [];
        csv.push(["city","country_code","country_name","ip","latitude","longitude","metro_code","region_code","region_name","time_zone","zip_code"]);

        var i=0;
        next(i);

        function next() {
            $.getJSON("http://freegeoip.net/json/" + ips[i], function(data) {
                console.log(data);
        var row = data;

                var cols = [];
                cols.push(row.city || "");
                cols.push(row.country_code || "");
        cols.push(row.country_name || "");
                cols.push(row.ip || "");
                cols.push(row.latitude || "");
                cols.push(row.longitude || "");
                cols.push(row.metro_code);
                cols.push(row.region_code || "");
        cols.push(row.region_name || "");
                cols.push(row.time_zone || "");
                cols.push(row.zip_code || "");

                var r=JSON.stringify(cols).substr(1);
                csv.push(r.substr(0,r.length-1));

                if (i<ips.length-1) next(++i); else done();
            });
        }

    function done() {
      var text = csv.join("\n");

      //download
      var element = document.createElement('a');
      element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
      element.setAttribute('download', "geo.csv");
      element.style.display = 'none';
      document.body.appendChild(element);
      element.click();
      document.body.removeChild(element);
    }
    });

    function initMap() {
        console.log("test");
    }
    </script>
</head>
<body>
    <div id="map" style="height: 500px;"></div>
</body>
</html>

<script>
    var ips = ["8.8.8.8", "1.1.1.1"]; //etc
</script>