Detailed map, US counties

author(s): Torstein Hønsi

by prateekbansal07

HTML

<div id="container" style="height: 520px; width: 800px; margin: 0 auto; text-align:center; line-height: 520px">
    Downloading map...
</div>

<script src="https://code.highcharts.com/maps/highmaps.js"></script>
<script src="https://code.highcharts.com/maps/modules/data.js"></script>
<script src="https://code.highcharts.com/maps/modules/data.js"></script>
<script src="https://code.highcharts.com/maps/modules/exporting.js"></script>
<script src="https://code.highcharts.com/maps/modules/offline-exporting.js"></script>
<script src="https://code.highcharts.com/mapdata/countries/us/us-all-all.js"></script>

JavaScript

Highcharts.getJSON(
    'https://cdn.jsdelivr.net/gh/highcharts/highcharts@c116b6fa6948448/samples/data/us-counties-unemployment.json',
    function (data) {

        /**
         * Data parsed from http://www.bls.gov/lau/#tables
         *
         * 1. Go to http://www.bls.gov/lau/laucntycur14.txt (or similar, updated
         *    datasets)
         * 2. In the Chrome Developer tools console, run this code:
         *    copy(JSON.stringify(document.body.innerHTML.split('\n').filter(function (s) { return s.indexOf('<PUT DATE HERE IN FORMAT e.g. Feb-14>') !== -1; }).map(function (row) { row = row.split('|'); return { code: 'us-' + row[3].trim().slice(-2).toLowerCase() + '-' + row[2].trim(), name: row[3].trim(), value: parseFloat(row[8]) }; })))
         * 3. The data is now on your clipboard, paste it below
         * 4. Verify that the length of the data is reasonable, about 3300
         *    counties.
         */

        var countiesMap = Highcharts.geojson(
                Highcharts.maps['countries/us/us-all-all']
            ),
            // Extract the line paths from the GeoJSON
            lines = Highcharts.geojson(
                Highcharts.maps['countries/us/us-all-all'], 'mapline'
            ),
            // Filter out the state borders and separator lines, we want these
            // in separate series
            borderLines = Highcharts.grep(lines, function (l) {
                return l.properties['hc-group'] === '__border_lines__';
            }),
            separatorLines = Highcharts.grep(lines, function (l) {
                return l.properties['hc-group'] === '__separator_lines__';
            });

        // Add state acronym for tooltip
        Highcharts.each(countiesMap, function (mapPoint) {
            mapPoint.name = mapPoint.name + ', ' +
                mapPoint.properties['hc-key'].substr(3, 2);
        });

        document.getElementById('container').innerHTML = 'Rendering map...';

        // Create the map
       ...