使用canvas API可以创建多种应用,下面我做一个我特别感兴趣的例子,叫做热点图

怎么理解热点图呢,其实很简单,就是度量温度的意思,可以用于任何可测量的活动。界面上活跃高的部分以用亮色标记,活跃低的用暗色标记。举个例子,热点图可以用在城市地图标记交通路况,或者在世界各地地图上上显示风暴的活动情况。

接下来这个例子是,鼠标移动到某个区域,会使某个区域的热度增加。如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>heatmap</title>
        <style type="text/css">
            #heatmap{
                background-image:url(img/bac.jpg);
            }
        </style>
    </head>
    <body>
        <h1>heatMap</h1>
        <canvas id="heatmap" width="300" height="400"></canvas>
        <button id='button'>清空画面</button>
    </body>
    <script type="text/javascript">
            
            function log() {
                    console.log(arguments);
                }
            
                var points = {};
                var SCALE = 3;
            
                var x = -1;
                var y = -1;
            
                function loadDemo() {
                    document.getElementById("button").onclick = reset;
            
                    canvas = document.getElementById("heatmap");
                    context = canvas.getContext('2d');
                    context.globalAlpha = 0.2;
                    context.globalCompositeOperation = "lighter";
            
                    function sample() {
                        if (x != -1) {
                            addToPoint(x,y)
                        }
                        setTimeout(sample, 100);
                    }
            
                    canvas.onmousemove = function(e) {
                        x = e.clientX - e.target.offsetLeft;
                        y = e.clientY - e.target.offsetTop;
                        addToPoint(x,y)
                    }
            
                    sample();
                }
            
                function reset() {
                    points = {};
                    context.clearRect(0,0,300,400);
                    x = -1;
                    y = -1;
                }
            
            
                function getColor(intensity) {
                    var colors = ['#2F4F4F','#008000','#228B22','#32CD32','#00FF00','#7CFC00','#ADFF2F','#90EE90','yellow'];
                    return colors[Math.floor(intensity/2)];
                }
            
                function drawPoint(x, y, radius) {
                        context.fillStyle= getColor(radius);
                        radius = Math.sqrt(radius)*6;
            
                        context.beginPath();
                        context.arc(x, y, radius, 0, Math.PI*2, true)
            
                        context.closePath();
                        context.fill();
                }
            
                function addToPoint(x, y) {
                    x = Math.floor(x/SCALE);
                    y= Math.floor(y/SCALE);
            
                    if (!points[[x,y]]) {
                        points[[x,y]] = 1;
                    } else if (points[[x,y]]==10) {
            return
                    } else {
                        points[[x,y]]++;
                    }
                    drawPoint(x*SCALE,y*SCALE, points[[x,y]]);
                }
            
            
                window.addEventListener("load", loadDemo, true);
                    
        
        
    </script>
</html>

HTML5 canvas热点图应用相关推荐

  1. Aristochart – 灵活的 HTML5 Canvas 折线图

    Aristochart 是基于 HTML5 Canvas 的折线图功能库,具有高定制性和灵活性的特点.Aristochart 会帮助你处理图形显示,让你能够专注于业务逻辑处理. 您可能感兴趣的相关文章 ...

  2. 基于Echarts的HTML5 Canvas折线图柱状图DEMO演示

    HTML代码 : <div id="barChart" style="height: 400px;width:600px;background:white;marg ...

  3. 基于Echarts的HTML5 Canvas折线图DEMO演示

    HTML代码: <div id="lineChart" style="height: 400px;width:600px;background:white;marg ...

  4. html制作柱状图教程,基于Echarts的HTML5 Canvas折线图柱状图DEMO演示

    JavaScript代码 : var barChart = { title: { text: '折柱混合图' }, dataZoom: { type:'inside',//slider //orien ...

  5. html在线热点工具,Heatmap.js 强大的 HTML5 画布 WEB 网页在线热点图插件 - 资源分享...

    Heatmap.js 可以用来生成基于用户自定义数据上的 Web 热点图,使用内嵌的 HTML5 Canvas 画布元素,heatmap.js 可以使用 Canvas 画出来一张漂亮的 heatmap ...

  6. HTML5图片怎么添加渐变,HTML5 canvas图和实现填充渐变形状

    本篇教程探讨了HTML5 canvas图和实现填充渐变形状,希望阅读本篇文章以后大家有所收获,帮助大家HTML5+CSS3从入门到精通 . < html PUBLIC "-//W3C/ ...

  7. html5canvas绘制图片源码,HTML5 CANVAS:绘制图片

    HTML5 CANVAS:绘制图片 通过前面的学习,我们现在已经可以在HTML5 canvas中绘制图形和文字,并给它们设置一些样式.我们还可以在中绘制图片.用于在作为绘制源的图片可以是下面的几种元素 ...

  8. html5 自动扣图,js+html5 canvas实现ps钢笔抠图

    html5 canvas+js实现ps钢笔抠图 1. 项目要求需要用js实现photoshop中钢笔抠图功能,就用了近三四天的时间去解决它,最终还是基本上把他实现了. 做的过程中走了不少弯路,最终一同 ...

  9. html5拓扑图图入门,如何使用HTML5 Canvas动态的绘制拓扑图

    如何使用HTML5 Canvas动态的绘制拓扑图 使用HTML5 Canvas动态的绘制拓扑图: HTML5中引入新的元素canvas,其drawImage 方法允许在 canvas 中插入其他图像( ...

最新文章

  1. Gbps接口面向汽车应用
  2. Grape Api 笔记
  3. 【Linux系统编程】浅谈进程地址空间与虚拟存储空间
  4. linux获取主板温度电压_自学修电脑:常见主板报警声解析!
  5. yarn install node-sass(gulp-sass) 安装失败解决方案
  6. php 什么时候使用单例,php什么时候使用单例模式
  7. 【码云周刊第 8 期】面试之前,或许该高效率地学点干货了!
  8. 也可以说不漂亮的飞鸽传书
  9. 流体力学及其工程应用
  10. 中央集成管理系统服务器,一种用于PCB生产设备的CIM集成中央管理系统
  11. 百度指数python爬虫的简单应用
  12. MySQL高级索引及调优篇
  13. 工具推荐:最好用的pCap工具
  14. composer入门教程
  15. 【软件测试】测试用例相关知识(六大测试用例设计方法)
  16. 性能测试指标及常用的监控工具
  17. JAVASE、JAVAEE(J2EE)、
  18. 电脑分屏设置主屏_WinXP电脑双屏显示设置的方法
  19. css行高(line-height)及文本垂直居中原理
  20. 为什么lol进服务器时显示错误,《lol手游》显示authenticationerror怎么解决 异常问题解决方法...

热门文章

  1. 软件测试基础理论-测试用例
  2. CSDN文章转PDF
  3. Easy Deep Learning——卷积层
  4. android加载.swf flash文件
  5. 日本互联网的十大知名巨头!你听说过几个?
  6. 【Python】基于Python获取腾讯位置大数据并进行数据清洗与可视化
  7. QsciScintilla等编辑器实现不同区域鼠标右键处理方式不同的方法
  8. 浙大版《C语言程序设计(第3版)》题目集(编程题q41-q50)
  9. python locust在windows下的安装
  10. android 生成aar文件,Android 中.aar文件生成方法与用法