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 相关文章推荐
vs2003 js文件编码问题的解决方法
Mar 20 Javascript
JS实现网页Div层Clone拖拽效果
Sep 26 Javascript
jQuery simplePage+AJAX plus分页插件用法实例
Feb 17 Javascript
基于Vue.js实现数字拼图游戏
Aug 02 Javascript
浅谈Angular2 模块懒加载的方法
Oct 04 Javascript
vue双向数据绑定知识点总结
Apr 18 Javascript
详解vue几种主动刷新的方法总结
Feb 19 Javascript
vue动态配置模板 'component is'代码
Jul 04 Javascript
layui输入框中只允许输入整数的实现方法
Sep 18 Javascript
微信接入之获取用户头像的方法步骤
Sep 23 Javascript
nuxt.js写项目时增加错误提示页面操作
Nov 05 Javascript
分享15个Webpack实用的插件!!!
Mar 31 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
盘点被央视点名过的日本动画电影 一部比一部强
2020/03/08 日漫
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
2011/10/31 PHP
php 读取文件头判断文件类型的实现代码
2013/08/05 PHP
PHP include任意文件或URL介绍
2014/04/29 PHP
PHP实现自动登入google play下载app report的方法
2014/09/23 PHP
php文件操作之小型留言本实例
2015/06/20 PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
2018/05/31 PHP
php+croppic.js实现剪切上传图片功能
2018/08/14 PHP
javascript两种function的定义介绍及区别说明
2013/05/02 Javascript
js返回上一页并刷新的多种实现方法
2014/02/26 Javascript
JavaScript使用循环和分割来替换和删除元素实例
2014/10/13 Javascript
jquery属性,遍历,HTML操作方法详解
2016/09/17 Javascript
深入探讨JavaScript的最基本部分之执行上下文
2019/02/12 Javascript
微信小程序API—获取定位的详解
2019/04/30 Javascript
微信小程序官方动态自定义底部tabBar的例子
2019/09/04 Javascript
[51:06]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS Liquid
2018/03/30 DOTA
[03:48]大碗DOTA
2019/07/25 DOTA
[05:59]带你看看DPC的台前幕后
2021/03/11 DOTA
python网络爬虫采集联想词示例
2014/02/11 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
PyQt5每天必学之弹出消息框
2018/04/19 Python
django 发送手机验证码的示例代码
2018/04/25 Python
Python爬虫框架scrapy实现的文件下载功能示例
2018/08/04 Python
python 使用值来排序一个字典的方法
2018/11/16 Python
python 对字典按照value进行排序的方法
2019/05/09 Python
Django实现跨域请求过程详解
2019/07/25 Python
python实现多线程端口扫描
2019/08/31 Python
Python编程快速上手——强口令检测算法案例分析
2020/02/29 Python
澳大利亚自然和有机的健康美容产品一站式商店:Ziani Beauty
2017/12/28 全球购物
一些关于MySql加速和优化的面试题
2014/01/30 面试题
师德学习感言
2014/01/31 职场文书
党员承诺书范文
2014/05/19 职场文书
乡镇领导干部个人对照检查材料思想汇报
2014/09/23 职场文书
2016高一新生军训心得体会
2016/01/11 职场文书
mysq启动失败问题及场景分析
2021/07/15 MySQL
js面向对象编程OOP及函数式编程FP区别
2022/07/07 Javascript