• Edit
  • Download
  • <!doctype html>
    <html class="zc-html">
    
    <head>
      <meta charset="utf-8">
      <title>ZingSoft Demo</title>
      <script nonce="undefined" src="https://cdn.zingchart.com/zingchart.min.js"></script>
      <style>
        .zc-body {
          background: #fff;
        }
    
        .chart--container {
          height: 100%;
          width: 100%;
          min-height: 530px;
        }
    
        .zc-ref {
          display: none;
        }
      </style>
    </head>
    ​
    
    <body class="zc-body">
      ​
      <input id="sc" type="checkbox" /><label for="sc">Show only small cities</label> (up to <select id="maxpop" disabled="disabled">
        <option value="100000">100.000</option>
        <option value="50000">50.000</option>
        <option value="10000">10.000</option>
        <option value="5000">5.000</option>
        <option value="1000">1.000</option>
        <option value="500">500</option>
      </select> people)
    
      <div id="myChart" class="chart--container">
        <a href="https://www.zingchart.com/" rel="noopener" class="zc-ref">Powered by ZingChart</a>
      </div>
    
      <script nonce="undefined" src='https://s3-us-west-2.amazonaws.com/s.cdpn.io/374756/fr_pop_2010.js'></script>
    
      <script>
        ZC.LICENSE = ["569d52cefae586f634c54f86dc99e6a9", "b55b025e438fa8a98e32482b5f768ff5"];
        let chartConfig = {
          type: 'null',
          backgroundColor: '#fff',
          flat: true,
          heatmap: {
            tooltip: {
              text: '~ %value people',
              thousandsSeparator: '.',
              decimals: 0
            },
            alpha: 1,
            sortData: true,
            async: true,
            brushType: 'square',
            size: 3,
            blur: 1,
          },
          tooltip: {
            padding: '5 10',
            fontSize: '11px',
            callout: true,
            calloutWidth: '10px',
            calloutHeight: '6px',
            calloutPosition: 'bottom',
          },
          colorScale: {
            aspect: 'gradient',
            gradientStops: '0.0 0.4 0.6 0.7 0.8 1.0',
            gradientColors: 'rgba(0,0,255,0) #0000ff #00ffff #bfff00 #ffff00 #ff0000',
            backgroundColor: null,
            alpha: 0.8,
          },
          shapes: [{
            type: 'zingchart.maps',
            options: {
              id: 'mapmain',
              name: 'fra',
              scale: true,
              zooming: false,
              panning: false,
              scrolling: false,
              style: {
                flat: true,
                controls: {
                  visible: false,
                },
                borderAlpha: 0.1,
                borderColor: '#fff',
                label: {
                  overlap: false,
                  text: '%long-text',
                },
                hoverState: {
                  visible: false,
                  backgroundColor: 'none',
                  shadowAlpha: 0.2,
                  shadowDistance: 2,
                  shadow: true,
                  shadowColor: '#333',
                },
              },
            },
          }, ],
        };
    
        zingchart.bind('myChart', 'load', function() {
          paintHeatmap();
        });
    
        window.paintHeatmap = function(iMax, bSmallBrush) {
          let aData = [];
          let iMaxPop = 0;
          for (let i = 0; i < FR_POP_2010.length; i++) {
            if (iMax && FR_POP_2010[i][2] > iMax) {
              continue;
            }
            let fLon = FR_POP_2010[i][0],
              fLat = FR_POP_2010[i][1],
              iPop = FR_POP_2010[i][2];
            let aXY = zingchart.maps.getXY('mapmain', [fLon, fLat]);
            aData.push([aXY[0], aXY[1], iPop]);
            iMaxPop = Math.max(iMaxPop, iPop);
          }
          zingchart.exec('myChart', 'colorscale.update', {
            data: {
              maxValue: iMaxPop,
            },
          });
          let oCSInfo = zingchart.exec('myChart', 'colorscale.getinfo');
          zingchart.exec('myChart', 'heatmap.setdata', {
            minValue: 0,
            maxValue: oCSInfo.max,
            data: aData,
            size: bSmallBrush ? 4 : 12,
            blur: bSmallBrush ? 0 : 6,
          });
        };
    
        zingchart.bind('myChart', 'heatmap.mousemove', function(oInfo) {
          if (oInfo.value !== null) {
            zingchart.exec(oInfo.id, 'colorscale.setvalue', {
              graphid: oInfo.graphid,
              value: oInfo.value,
            });
          } else {
            zingchart.exec(oInfo.id, 'colorscale.clear', {
              graphid: oInfo.graphid,
            });
          }
        });
    
        document.querySelector('#sc').addEventListener('click', function() {
          if (this.checked) {
            paintHeatmap(100000, true);
            let maxpopRef = document.querySelector('#maxpop');
            maxpopRef.value = 100000;
            maxpopRef.removeAttribute('disabled');
          } else {
            paintHeatmap();
            let maxpopRef = document.querySelector('#maxpop');
            maxpopRef.setAttribute('disabled', 'disabled');
          }
        });
    
        document.querySelector('#maxpop').addEventListener('change', function() {
          paintHeatmap(this.value, true);
        });
    
        zingchart.loadModules('heatmap,color-scale,maps,maps-fra', function() {
          zingchart.render({
            id: 'myChart',
            width: '600px',
            height: '600px',
            output: 'canvas',
            data: chartConfig,
            modules: 'heatmap,color-scale',
          });
        });
      </script>
    </body>
    
    </html>
    <!doctype html>
    <html class="zc-html">
    
    <head>
      <meta charset="utf-8">
      <title>ZingSoft Demo</title>
      <script src="https://cdn.zingchart.com/zingchart.min.js"></script>
    </head>
    ​
    
    <body class="zc-body">
      ​
      <input id="sc" type="checkbox" /><label for="sc">Show only small cities</label> (up to <select id="maxpop" disabled="disabled">
        <option value="100000">100.000</option>
        <option value="50000">50.000</option>
        <option value="10000">10.000</option>
        <option value="5000">5.000</option>
        <option value="1000">1.000</option>
        <option value="500">500</option>
      </select> people)
    
      <div id="myChart" class="chart--container">
        <a href="https://www.zingchart.com/" rel="noopener" class="zc-ref">Powered by ZingChart</a>
      </div>
    
      <script src='https://s3-us-west-2.amazonaws.com/s.cdpn.io/374756/fr_pop_2010.js'></script>
    
    </body>
    
    </html>
    .zc-body {
      background: #fff;
    }
    
    .chart--container {
      height: 100%;
      width: 100%;
      min-height: 530px;
    }
    
    .zc-ref {
      display: none;
    }
    let chartConfig = {
      type: 'null',
      backgroundColor: '#fff',
      flat: true,
      heatmap: {
        tooltip: {
          text: '~ %value people',
          thousandsSeparator: '.',
          decimals: 0
        },
        alpha: 1,
        sortData: true,
        async: true,
        brushType: 'square',
        size: 3,
        blur: 1,
      },
      tooltip: {
        padding: '5 10',
        fontSize: '11px',
        callout: true,
        calloutWidth: '10px',
        calloutHeight: '6px',
        calloutPosition: 'bottom',
      },
      colorScale: {
        aspect: 'gradient',
        gradientStops: '0.0 0.4 0.6 0.7 0.8 1.0',
        gradientColors: 'rgba(0,0,255,0) #0000ff #00ffff #bfff00 #ffff00 #ff0000',
        backgroundColor: null,
        alpha: 0.8,
      },
      shapes: [{
        type: 'zingchart.maps',
        options: {
          id: 'mapmain',
          name: 'fra',
          scale: true,
          zooming: false,
          panning: false,
          scrolling: false,
          style: {
            flat: true,
            controls: {
              visible: false,
            },
            borderAlpha: 0.1,
            borderColor: '#fff',
            label: {
              overlap: false,
              text: '%long-text',
            },
            hoverState: {
              visible: false,
              backgroundColor: 'none',
              shadowAlpha: 0.2,
              shadowDistance: 2,
              shadow: true,
              shadowColor: '#333',
            },
          },
        },
      }, ],
    };
    
    zingchart.bind('myChart', 'load', function() {
      paintHeatmap();
    });
    
    window.paintHeatmap = function(iMax, bSmallBrush) {
      let aData = [];
      let iMaxPop = 0;
      for (let i = 0; i < FR_POP_2010.length; i++) {
        if (iMax && FR_POP_2010[i][2] > iMax) {
          continue;
        }
        let fLon = FR_POP_2010[i][0],
          fLat = FR_POP_2010[i][1],
          iPop = FR_POP_2010[i][2];
        let aXY = zingchart.maps.getXY('mapmain', [fLon, fLat]);
        aData.push([aXY[0], aXY[1], iPop]);
        iMaxPop = Math.max(iMaxPop, iPop);
      }
      zingchart.exec('myChart', 'colorscale.update', {
        data: {
          maxValue: iMaxPop,
        },
      });
      let oCSInfo = zingchart.exec('myChart', 'colorscale.getinfo');
      zingchart.exec('myChart', 'heatmap.setdata', {
        minValue: 0,
        maxValue: oCSInfo.max,
        data: aData,
        size: bSmallBrush ? 4 : 12,
        blur: bSmallBrush ? 0 : 6,
      });
    };
    
    zingchart.bind('myChart', 'heatmap.mousemove', function(oInfo) {
      if (oInfo.value !== null) {
        zingchart.exec(oInfo.id, 'colorscale.setvalue', {
          graphid: oInfo.graphid,
          value: oInfo.value,
        });
      } else {
        zingchart.exec(oInfo.id, 'colorscale.clear', {
          graphid: oInfo.graphid,
        });
      }
    });
    
    document.querySelector('#sc').addEventListener('click', function() {
      if (this.checked) {
        paintHeatmap(100000, true);
        let maxpopRef = document.querySelector('#maxpop');
        maxpopRef.value = 100000;
        maxpopRef.removeAttribute('disabled');
      } else {
        paintHeatmap();
        let maxpopRef = document.querySelector('#maxpop');
        maxpopRef.setAttribute('disabled', 'disabled');
      }
    });
    
    document.querySelector('#maxpop').addEventListener('change', function() {
      paintHeatmap(this.value, true);
    });
    
    zingchart.loadModules('heatmap,color-scale,maps,maps-fra', function() {
      zingchart.render({
        id: 'myChart',
        width: '600px',
        height: '600px',
        output: 'canvas',
        data: chartConfig,
        modules: 'heatmap,color-scale',
      });
    });