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的ajax获取数据后的处理总结(html,xml,json)
Jul 14 Javascript
jQuery Tools tab使用介绍
Jul 14 Javascript
js下拉框二级关联菜单效果代码具体实现
Aug 03 Javascript
javascript中创建对象的几种方法总结
Nov 01 Javascript
分享一些常用的jQuery动画事件和动画函数
Nov 27 Javascript
JS实现物体带缓冲的间歇运动效果示例
Dec 22 Javascript
Vue.js结合bootstrap实现分页控件
Mar 10 Javascript
微信小程序 向左滑动删除功能的实现
Mar 10 Javascript
在vue中读取本地Json文件的方法
Sep 06 Javascript
微信小程序自定义多列选择器使用详解
Jun 21 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
Sep 04 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
Sep 21 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
JavaScript词法作用域与调用对象深入理解
2012/11/29 Javascript
div模拟滚动条效果示例代码
2013/10/16 Javascript
使用javascript为网页增加夜间模式
2014/01/26 Javascript
JavaScript 基本概念
2015/01/20 Javascript
PHP结合jQuery实现红蓝投票功能特效
2015/07/22 Javascript
JavaScript必知必会(二) null 和undefined
2016/06/08 Javascript
Javascript中关于Array.filter()的妙用详解
2016/12/04 Javascript
基于jQuery实现选项卡效果
2017/01/04 Javascript
微信小程序 页面跳转如何实现传值
2017/04/05 Javascript
ES6中Array.copyWithin()函数的用法实例详解
2017/09/16 Javascript
webpack项目轻松混用css module的方法
2018/06/12 Javascript
CountUp.js实现数字滚动增值效果
2019/10/17 Javascript
JS call()及apply()方法使用实例汇总
2020/07/11 Javascript
js制作提示框插件
2020/12/24 Javascript
[07:20]2014DOTA2西雅图国际邀请赛 选手讲解积分赛第二天
2014/07/11 DOTA
python定时器使用示例分享
2014/02/16 Python
从零学python系列之数据处理编程实例(二)
2014/05/22 Python
python复制文件的方法实例详解
2015/05/22 Python
Django中使用celery完成异步任务的示例代码
2018/01/23 Python
python3实现基于用户的协同过滤
2018/05/31 Python
Django实现表单验证
2018/09/08 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
python利用小波分析进行特征提取的实例
2019/01/09 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
Python实现查找字符串数组最长公共前缀示例
2019/03/27 Python
英国网上电器商店:Electricshop
2020/03/15 全球购物
不开辟用于交换数据的临时空间,如何完成字符串的逆序
2012/12/02 面试题
汽车技术服务与营销专业在籍生自荐信
2013/09/28 职场文书
白酒市场开发计划书
2014/01/09 职场文书
手机银行营销方案
2014/03/14 职场文书
房地产经营管理专业自荐信
2014/09/02 职场文书
党员对照检查材料思想汇报(党的群众路线)
2014/09/24 职场文书
销售经理工作失职检讨书
2014/10/24 职场文书
事业单位年度考核个人总结
2015/02/12 职场文书
2015年行政助理工作总结
2015/04/30 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书