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 相关文章推荐
屏蔽相应键盘按钮操作
Mar 10 Javascript
如何将php数组或者对象传递给javascript
Mar 20 Javascript
JavaScript实现MIPS乘法模拟的方法
Apr 17 Javascript
javascript日期处理函数,性能优化批处理
Sep 06 Javascript
JavaScript兼容性总结之获取非行间样式案例
Aug 07 Javascript
利用iscroll4实现轮播图效果实例代码
Jan 11 Javascript
整理关于Bootstrap导航的慕课笔记
Mar 29 Javascript
详解vue项目打包步骤
Mar 29 Javascript
浅谈Vue.js组件(二)
Apr 09 Javascript
vue element upload组件 file-list的动态绑定实现
Oct 11 Javascript
jquery实现弹窗(系统提示框)效果
Dec 10 jQuery
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
Feb 14 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数据库开发知多少
2006/10/09 PHP
网络资源
2006/10/09 PHP
PHP开发中常用的三个表单验证函数使用小结
2010/03/03 PHP
奇怪的PHP引用效率问题分析
2012/03/23 PHP
使用PHP遍历文件目录与清除目录中文件的实现详解
2013/06/24 PHP
php之curl设置超时实例
2014/11/03 PHP
用php来限制每个ip每天浏览页面数量的实现思路
2015/02/24 PHP
JavaScript实现删除电脑的关机键
2016/07/26 PHP
php实现base64图片上传方式实例代码
2017/02/22 PHP
TP3.2.3框架文件上传操作实例详解
2020/01/23 PHP
jQuery解决iframe高度自适应代码
2009/12/20 Javascript
Lazy Load 延迟加载图片的 jQuery 插件
2010/02/06 Javascript
javascript DIV实现跟随鼠标移动
2020/03/19 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
2016/05/24 Javascript
用原生JS实现简单的多选框功能
2017/06/12 Javascript
jQuery EasyUI的TreeGrid查询功能实现方法
2017/08/08 jQuery
JS设计模式之惰性模式(二)
2017/09/29 Javascript
JS实现倒序输出的几种常用方法示例
2019/04/13 Javascript
微信小程序开发(二):页面跳转并传参操作示例
2020/06/01 Javascript
[04:19]完美世界携手游戏风云打造 卡尔工作室模型介绍篇
2013/04/24 DOTA
python str与repr的区别
2013/03/23 Python
python处理二进制数据的方法
2015/06/03 Python
Django 使用easy_thumbnails压缩上传的图片方法
2019/07/26 Python
翻新二手苹果产品的网络领导者:Mac of all Trades
2017/12/19 全球购物
急诊科护士自我鉴定
2013/10/14 职场文书
计算机网络专业个人的自我评价
2013/10/17 职场文书
英语专业应届生求职信范文
2013/11/15 职场文书
新郎婚宴答谢词
2014/01/19 职场文书
应届毕业生自荐信例文
2014/02/26 职场文书
高中学生评语大全
2014/04/25 职场文书
英语专业求职信
2014/07/08 职场文书
销售工作决心书
2015/02/04 职场文书
2015毕业实习推荐信
2015/03/23 职场文书
证婚人致辞精选
2015/07/28 职场文书
小学英语听课心得体会
2016/01/14 职场文书
党风廉政建设心得体会(2016最新版)
2016/01/22 职场文书