首页前端开发HTML如何用canvas画出一个路线图(代码)

如何用canvas画出一个路线图(代码)

时间2024-01-23 15:55:55发布访客分类HTML浏览958
导读:收集整理的这篇文章主要介绍了如何用canvas画出一个路线图(代码),觉得挺不错的,现在分享给大家,也给大家做个参考。本篇文章给大家带来的内容是关于如何用canvas画出一个路线图(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对...
收集整理的这篇文章主要介绍了如何用canvas画出一个路线图(代码),觉得挺不错的,现在分享给大家,也给大家做个参考。本篇文章给大家带来的内容是关于如何用canvas画出一个路线图(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

head>
        meta http-equiv="content-tyPE" content="text/htML;
    charset=utf-8">
        meta http-equiv="X-UA-Compatible" content="IE=Edge">
        meta content="always" name="referrer">
        meta content="width=device-width, inITial-scale=1.0, minimum-scale=1.0" name="viewport" />
        title>
    CITEK反向寻车/title>
        script src="%=basePath%>
    wui/js/jquery.js">
    /script>
        link rel="stylesheet" href="%=cssPath%>
    wui.css" type="text/css">
    /link>
        script type="text/javascript" src="%=basePath%>
    wui/js/line_tool.js">
    /script>
        script type="text/javascript">
    VAR arrPOSX = [], arrPosY = [];
            s:iterator value="listNode" status="bean">
              //设置路线中点的横坐标和纵坐标的集合            arrPosX.push(s:PRoperty value="posX" />
    );
                arrPosY.push(s:property value="posY" />
    );
            /s:iterator>
            var arrRoundPosX = [], arrRoundPosY = [];
              //设置终点所在区域的范围点横坐标和纵坐标集合        s:iterator value="positionsX" status="bean">
                arrRoundPosX.push(s:property />
    );
            /s:iterator>
            s:iterator value="positionsY" status="bean">
                arrRoundPosY.push(s:property />
    );
            /s:iterator>
            var ctxBackground, canvasBackground;
               var ctxSource, canvasSource;
            var canvasWidth, canvasHeight;
                    var imgStart, imgEnd, imgBackground,;
            var areaimage;
            var isStart = false;
                    var scale = 1;
            var scaleInterval = 3;
            var scaleCount = 0;
            var runCount = 0;
            var step = 2;
        //像素        var moveX = 1;
            var moveY = 1;
            var currIndex = 0;
            var a = 0;
            var tmpIconPaths = [                                                         //设置起点图标            "%=basePath%>
    img/point_start.png",         ];
            var imgObjArr = [];
            var iLoadIndex = 0;
                /**         * 将图标放入集合中         */        function loadIconImages(){
                var oImg = new Image();
                oImg.addEventListener('load', eventIconImagesLoaded, false);
                oImg.src = tmpIconPaths[iLoadIndex];
                imgObjArr.push(oImg);
        }
                /**         * 加载图标         */        function eventIconImagesLoaded(){
                iLoadIndex++;
            if(iLoadIndex = 3) {
                    loadIconImages();
            }
 else {
                    loadImage();
            }
        }
                /**         * 加载背景图标         */        function loadImage(){
                   areaImage = new Image();
                   areaImage.addEventListener('load', eventAreaImageLoaded, false);
                   areaImage.src ="%=basePath%>
    image/img.jpg;
        }
                function eventAreaImageLoaded(){
                initBase();
                initScene();
                initSprits();
                start();
                isStart = true;
        }
                /**         * 初始化         */        function initBase() {
                imgStart = imgObjArr[0];
                    canvasBackground = document.getElementById("canvasBackground");
                ctxBackground = canvasBackground.getContext("2d");
                    canvasSource = document.getElementById("canvasSource");
                ctxSource = canvasSource.getContext("2d");
                            canvasWidth = areaImage.width;
                canvasHeight = areaImage.height;
                            var bodyWidth = document.body.clientWidth-10;
                var bodyHeight = document.body.clientHeight-10;
                var tmpCavW = canvasWidth;
                var tmpCavH = canvasHeight;
                            if(canvasWidth >
 bodyWidth)    {
                    canvasWidth = bodyWidth;
                    canvasHeight = canvasWidth * (tmpCavH/tmpCavW);
            }
                if(canvasHeight >
 bodyHeight){
                    canvasHeight = bodyHeight;
                    canvasWidth = canvasHeight * (tmpCavW/tmpCavH);
            }
                canvasBackground.width = canvasWidth;
                canvasBackground.height = canvasHeight;
                            canvasSource.width = canvasWidth;
                canvasSource.height = canvasHeight;
                moveX = arrPosX[0] * canvasWidth;
                moveY = arrPosY[0] * canvasHeight;
                    }
                /**         * 初始化画布         */        function initScene() {
                ctxBackground.drawImage(areaImage, 0, 0, canvasWidth, canvasHeight);
        }
                /**         * 开始绘图         */        function initSprits() {
                /* 绘制路线的白底 */             ctxBackground.beginPath();
                 ctxBackground.strokeStyle = "white";
                   ctxBackground.lineWidth = 8;
                   ctxBackground.lineCap = "round";
                   ctxBackground.lineJoin = "miter";
                   ctxBackground.miterLimit = 30;
                   for(var i=1;
     i  arrPosX.length;
 i++){
                       ctxBackground.moveTo(canvasWidth * arrPosX[i-1], canvasHeight * arrPosY[i-1]);
       //指定一条线段的起点                      ctxBackground.lineto(canvasWidth * arrPosX[i],     canvasHeight * arrPosY[i]);
     //指定一条线段的终点                }
                   ctxBackground.stroke();
                  /* 绘制路线的红线 */             ctxBackground.beginPath();
                                                 //是通过覆盖白底实现的               ctxBackground.strokeStyle = "rgba(255,0,0,1)";
                   ctxBackground.lineWidth = 4;
                   ctxBackground.lineCap = "round";
                   ctxBackground.lineJoin = "miter";
                   ctxBackground.miterLimit = 30;
                   for(var i=1;
     i  arrPosX.length;
 i++){
                       ctxBackground.moveTo(canvasWidth * arrPosX[i-1], canvasHeight * arrPosY[i-1]);
       //指定一条线段的起点                    ctxBackground.lineTo(canvasWidth * arrPosX[i],     canvasHeight * arrPosY[i]);
     //指定一条线段的终点                }
                   ctxBackground.stroke();
                             /* 绘制终点区域 */                                                                                                 ctxSource.clearRect(0, 0, canvasWidth,canvasHeight);
                ctxBackground.beginPath();
                ctxBackground.strokeStyle = "rgba(255,0,0,1)";
       //颜色            ctxBackground.lineWidth = 0.5;
                ctxBackground.fillStyle = "rgba(255,0,0,0)";
       //透明度               ctxBackground.moveTo(canvasWidth * arrRoundPosX[0], canvasHeight * arrRoundPosY[0]);
       //指定一条线段的起点                for(var i=1;
     i  arrRoundPosX.length;
 i++){
                     ctxBackground.lineTo(canvasWidth * arrRoundPosX[i],     canvasHeight * arrRoundPosY[i]);
     //指定一条线段的终点              }
                   ctxBackground.lineTo(canvasWidth * arrRoundPosX[0],     canvasHeight * arrRoundPosY[0]);
                  ctxBackground.closePath();
                ctxBackground.fill();
                ctxBackground.stroke();
                 /* 绘制起点图标 */            ctxBackground.drawImage(                    imgStart,                     canvasWidth * arrPosX[0] - imgStart.width * 0.25,                     canvasHeight * arrPosY[0] - imgStart.height * 0.25 - imgStart.height * 0.25,                     imgStart.width * 0.5,                     imgStart.height * 0.5);
        }
                /**         * 设置图标的跳动         */        function loop(){
                if(!isStart) return;
                if(scale >
     1.8) scale = 1;
                if(scaleCount >
     999999) scaleCount = 0;
                if(runCount >
     999999) runCount = 0;
                ctxSource.save();
                ctxSource.clearRect(0,0,canvasWidth,canvasHeight);
                /* 设置起点图标的跳动 */            ctxSource.translate(                    canvasWidth * arrPosX[0] - imgStart.width * 0.25 +imgStart.width*0.25,                    canvasHeight * arrPosY[0] - imgStart.height * 0.25+imgStart.height*0.25);
                ctxSource.scale(scale, scale);
                ctxSource.shadowOffsetX = 3;
     // 阴影x轴偏移            ctxSource.shadowOffsetY = 4;
     // 阴影y轴偏移            ctxSource.shadowBlur = 2;
     // 模糊尺寸            ctxSource.shadowColor = 'rgba(0, 0, 0, 0.5)';
     // 颜色                ctxSource.drawImage(                    imgStart,                     - imgStart.width * 0.25,                     - imgStart.height * 0.25 - imgStart.height * 0.25,                     imgStart.width * 0.5,                     imgStart.height * 0.5);
                ctxSource.reStore();
                ctxSource.save();
                                    /* 设置终点区域的透明度变化 */            if (runCount % 4 == 0) {
                     a = a + 0.1;
            }
                if (a >
 0.6) {
                    a = 0;
            }
                ctxSource.strokeStyle = "rgba(255,0,0,1)";
                ctxSource.lineWidth = 10;
                ctxSource.fillStyle = "rgba(255,0,0,"+a+")";
                   ctxSource.moveTo(canvasWidth * arrRoundPosX[0], canvasHeight * arrRoundPosY[0]);
       //指定一条线段的起点                for(var i=1;
     i  arrRoundPosX.length;
 i++){
                     ctxSource.lineTo(canvasWidth * arrRoundPosX[i],     canvasHeight * arrRoundPosY[i]);
     //指定一条线段的终点                }
                   ctxSource.lineTo(canvasWidth * arrRoundPosX[0],     canvasHeight * arrRoundPosY[0]);
                  ctxSource.closePath();
                ctxSource.fill();
                ctxSource.restore();
                ctxSource.save();
                                    scaleCount++;
                runCount++;
            if(scaleCount % scaleInterval == 0){
                    scale += 0.1;
            }
        }
                /**         * 设置标题和图片的长宽高和跳动频率         */        function start(){
                $("#monitor_list_box").width = canvasWidth + "px";
                $("#monitor_list_box").height = canvasHeight + "px";
                $("#canvasBackground").width = canvasWidth + "px";
                $("#canvasBackground").height = canvasHeight + "px";
                $("#canvasSource").width = canvasWidth + "px";
                $("#canvasSource").height = canvasHeight + "px";
                window.setInterval(loop,1000/30);
    //60帧        }
              /script>
      style type="text/css">
        #monitor_list_box {
    width:100%;
     height:auto;
     overflow: auto;
}
        #monitor_list_box canvas {
    position:absolute;
    width:100%;
     height:auto;
}
     /style>
    body>
    div id="monitor_list_box">
            canvas id="canvasBackground">
                Your browser does not support the canvas element.        /canvas>
            canvas id="canvasSource">
                Your browser does not support the canvas element.        /canvas>
        /div>
    /body>
    

相关推荐:

HTML5 canvas——用路径描画线条实例介绍_html5教程技巧

HTML5画一个简单呢好看的电路图

详细介绍HTML5简易在线画图工具的实现案例

以上就是如何用canvas画出一个路线图(代码)的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

上一篇: HTML5中的aside标签怎么用?HTML...下一篇:HTML5中的hgroup是干啥的?HTML5...猜你在找的html5相关文章 关于移动端h5开发相关内容总结2022-05-17html5教程-学表单的第二天2018-12-10html5教程-HTML5浏览器支持2018-12-10html5教程-HTML5智能表单2018-12-10html5教程-微信H5使用resLoader实现加载页效果2018-12-10html5教程-day01-初级-JS0-热身运动JS入门教程2018-12-10html5教程-html5shiv.js和respond.min.js2018-12-10html5教程-不同浏览器对于html5 audio标签和音频格式的兼容性2018-12-10html5教程-使用Html5实现手风琴案例2018-12-10html5教程-html5笔记2018-12-10 其他相关热搜词更多phpjavapython程序员load

若转载请注明出处: 如何用canvas画出一个路线图(代码)
本文地址: https://pptw.com/jishu/584390.html
HTML5中footer标签的用法你知道吗?,HTML5中的footer标签是什么意思? HTML5中的hgroup是干啥的?HTML5中的hgroup标签的具体用法在这,点进来看看吧

游客 回复需填写必要信息