H5 canvas 实现类似于导航效果的线

H5 canvas 实现类似于导航效果的线

       最近做项目时遇到得问题,要在不使用任何API的情况下完成类似地图的所有功能,包括放大、缩小、滑动、等。其中显示路线或导航路线的功能就用到了<canvas>这个标签。并用特殊的技巧画出了还不错的效果,并将封装好js文件分享出来,给需要的人提供一种思路。


项目中应用效果展示:
在这里插入图片描述
本文章不提供基础canvas绘画教学~!


1.核心思想

灵魂画手上线233

第1步:画出一条用于衬托的底部直线
在这里插入图片描述

第2步:重新定位canvas(画布)位置 将其基于线的起点 注意是移动画布左上角的基点,方法是translate(X, Y);
在这里插入图片描述

第3步:旋转虚拟画布
在这里插入图片描述
可以看到,此时相对于虚拟画布来说X轴已经是相对于真实画布上得直线来说是重叠的,此时使用js绘画是使用虚拟画布的绘画,绘画结果会映射到真实画布上!也就是说现在在js中沿画布X轴画线,映射到真实画布上将是与绿色线条重叠的线条。

第4步:沿虚拟画布X轴循环贴箭头图片。 将准备好的箭头图标沿X轴使用drawImage()循环贴入画布中,并且要注意要有适当间隔。
在这里插入图片描述

第5步:重置画布到初始位置,一次绘画结束
在这里插入图片描述


2.Road.js的使用

这个文件是a自己封装得文件,需要在script中引用↓

<script src="./road.js"></script>

并且在body中至少存在以下2个标签

		<!--由于需要一个img的dom 需要手动创建一个完整的img标签 
		一般用 display:none 将其隐藏-->
        <img id="map_roadIcon" src="./images/road_icon.png" alt="">
       
        <!--要操作的画布-->
        <canvas id="map_drawing" width="500" height="500"></canvas>

在js中使用

    <script type="text/javascript">
//         new一个road对象      这里使用jQuery取dom得方法 也可以使用原生取dom得方法
        var road = new Road( $("#map_drawing").get(0), $("#map_roadIcon").get(0));
//                          起  起   终  终  
//                          点  点   点  点  路  间
//                          X   Y    X   Y  宽  隔
        road.paintArrayRoad(10, 20, 480, 20, 20, 60); //默认底色绿色
        road.paintArrayRoad(10, 180, 480, 180, 20, 60, "#FF000d"); //更改底色
    </script>

效果:
在这里插入图片描述
文件中有标详细注解这里就不再赘述
在这里插入图片描述


3.文件下载

https://download.csdn.net/download/GAA775/19576616

网盘:提取码’GA75’

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值