mapboxgl实现带箭头轨迹线的代码


Posted in Javascript onJanuary 04, 2021

最近在使用mapboxgl实现轨迹展示时,想实现类似高德地图导航轨迹效果,然而并未在网上找到类似示例。经一番研究与尝试,最终解决,效果如下。

mapboxgl实现带箭头轨迹线的代码

添加箭头核心代码如下,只需在配置layout中添加symbol-placementsymbol-spacing属性即可:

// 添加箭头图层
function addArrowlayer() {
  map.addLayer({
    'id': 'arrowLayer',
    'type': 'symbol',
    'source': {
      'type': 'geojson',
      'data': routeGeoJson //轨迹geojson格式数据
    },
    'layout': {
      'symbol-placement': 'line',
      'symbol-spacing': 50, // 图标间隔,默认为250
      'icon-image': 'arrowIcon', //箭头图标
      'icon-size': 0.5
    }
  });
}

然而,为实现上述效果,确走了不少弯路。曾尝试集成Leaflet.PolylineDecorator插件核心算法,通过对线的处理,计算每个箭头所在位置以及角度,也能实现上述效果。不过该方案在地图倾斜旋转后,有时会有箭头偏移的bug。

在解决此bug过程中,不经意间看到道路标注都是沿道路线方向,突然有了新的灵感。

重新查看mapboxgl API,发现将layout中的symbol-placement设置为line,即可实现沿着线的方向绘制箭头。

注意:

1.我所用图标为右侧方向箭头,结果与实际方向相符,如果图标为向上箭头,需修改icon-rotate为90。

2.只把symbol-placement设置为line,箭头间距过于稀疏;需要设置下symbol-spacing参数,symbol-spacing默认值为250,修改为50即可实现文章首页图片效果。

在线示例

在线示例:http://gisarmory.xyz/blog/index.html?demo=MapboxGLPolylineDecorator

代码地址:http://gisarmory.xyz/blog/index.html?source=MapboxGLPolylineDecorator

原文地址:http://gisarmory.xyz/blog/index.html?blog=MapboxGLPolylineDecorator。

到此这篇关于mapboxgl实现带箭头轨迹线的文章就介绍到这了,更多相关mapboxgl实现带箭头轨迹线内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
jquery validate poshytip 自定义样式
Nov 26 Javascript
jquery使用ajax实现微信自动回复插件
Apr 28 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
Mar 24 Javascript
jQuery实现带有洗牌效果的动画分页实例
Aug 31 Javascript
jQuery Mobile页面返回不需要重新get
Apr 26 Javascript
Web程序员必备的7个JavaScript函数
Jun 14 Javascript
jquery validate表单验证插件
Sep 06 Javascript
Vue2.0利用 v-model 实现组件props双向绑定的优美解决方案
Mar 13 Javascript
node Buffer缓存区常见操作示例
May 04 Javascript
vue项目打包后上传至GitHub并实现github-pages的预览
May 06 Javascript
使用layui的layer组件做弹出层的例子
Sep 27 Javascript
JavaScript展开运算符和剩余运算符的区别详解
Feb 18 Javascript
jenkins自动构建发布vue项目的方法步骤
Jan 04 #Vue.js
vue3弹出层V3Popup实例详解
Jan 04 #Vue.js
vue3自定义dialog、modal组件的方法
Jan 04 #Vue.js
three.js显示中文字体与tween应用详析
Jan 04 #Javascript
js用正则表达式筛选年月日的实例方法
Jan 04 #Javascript
vue中父子组件的参数传递和应用示例
Jan 04 #Vue.js
如何在VUE中使用vue-awesome-swiper
Jan 04 #Vue.js
You might like
PHP调用三种数据库的方法(3)
2006/10/09 PHP
用PHP和ACCESS写聊天室(六)
2006/10/09 PHP
PHP分页显示制作详细讲解
2008/11/19 PHP
PHP 批量删除 sql语句
2009/06/05 PHP
php var_export与var_dump 输出的不同
2013/08/09 PHP
PHP文件读写操作相关函数总结
2014/11/18 PHP
thinkphp3.2框架中where条件查询用法总结
2019/08/13 PHP
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
2006/12/27 Javascript
在UpdatePanel内jquery easyui效果失效的解决方法
2010/04/11 Javascript
javascript 主动派发事件总结
2011/08/09 Javascript
jQuery实现HTML5 placeholder效果实例
2014/12/09 Javascript
jQuery中replaceWith()方法用法实例
2014/12/25 Javascript
深入理解JavaScript系列(17):面向对象编程之概论详细介绍
2015/03/04 Javascript
jQuery 获取select选中值及清除选中状态
2016/12/13 Javascript
JavaScript基础之this详解
2017/06/04 Javascript
简单谈谈axios中的get,post方法
2017/06/25 Javascript
Cocos2d实现刮刮卡效果
2018/12/20 Javascript
js中对象与对象创建方法的各种方法
2019/02/27 Javascript
JS学习笔记之贪吃蛇小游戏demo实例详解
2019/05/29 Javascript
javascript删除数组元素的七个方法示例
2019/09/09 Javascript
关于layui 弹出层一闪而过就消失的解决方法
2019/09/09 Javascript
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
2020/07/20 Python
对python的unittest架构公共参数token提取方法详解
2018/12/17 Python
python将控制台输出保存至文件的方法
2019/01/07 Python
Python eval的常见错误封装及利用原理详解
2019/03/26 Python
python numpy 反转 reverse示例
2019/12/04 Python
Python列表推导式实现代码实例
2020/09/09 Python
Python实现FTP文件定时自动下载的步骤
2020/12/19 Python
HTML5 拖放功能实现代码
2016/07/14 HTML / CSS
计算机求职信
2013/12/01 职场文书
日语专业个人的求职信
2013/12/03 职场文书
关于教师节的广播稿
2014/09/10 职场文书
中班下学期个人总结
2015/02/12 职场文书
解读Vue组件注册方式
2021/05/15 Vue.js
Python序列化与反序列化相关知识总结
2021/06/08 Python
Centos7 Shell编程之正则表达式、文本处理工具详解
2022/08/05 Servers