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 相关文章推荐
Array对象方法参考
Oct 03 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
Jan 29 Javascript
浅谈JSON.parse()和JSON.stringify()
Jul 14 Javascript
JSON字符串转JSON对象
Jul 31 Javascript
JS实现选择TextArea内文本的方法
Aug 03 Javascript
深入解析JavaScript中的数字对象与字符串对象
Oct 21 Javascript
JQuery核心函数是什么及使用方法介绍
May 03 Javascript
本地Bootstrap文件字体图标引入却无法显示问题的解决方法
Apr 18 Javascript
react中的ajax封装实例详解
Oct 17 Javascript
vue-image-crop基于Vue的移动端图片裁剪组件示例
Aug 28 Javascript
重学 JS:为啥 await 不能用在 forEach 中详解
Apr 15 Javascript
vue实现滑动切换效果(仅在手机模式下可用)
Jun 29 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
在PHP3中实现SESSION的功能(一)
2006/10/09 PHP
修改了一个很不错的php验证码(支持中文)
2007/02/14 PHP
PHP5 面向对象程序设计
2008/02/13 PHP
PHP实现仿Google分页效果的分页函数
2015/07/29 PHP
laravel中短信发送验证码的实现方法
2018/04/25 PHP
Prototype框架详解
2015/11/25 Javascript
Javascript数组Array基础介绍
2016/03/13 Javascript
JS编写函数实现对身份证号码最后一位的验证功能
2016/12/29 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
vue iview实现动态路由和权限验证功能
2018/04/17 Javascript
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
Vue2实时监听表单变化的示例讲解
2018/08/30 Javascript
初试vue-cli使用HBuilderx打包app的坑
2019/07/17 Javascript
layer弹出层显示在top顶层的方法
2019/09/11 Javascript
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
python实现k均值算法示例(k均值聚类算法)
2014/03/16 Python
Python中函数的用法实例教程
2014/09/08 Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
2017/08/05 Python
django admin添加数据自动记录user到表中的实现方法
2018/01/05 Python
python实现闹钟定时播放音乐功能
2018/01/25 Python
Python requests模块安装及使用教程图解
2020/06/30 Python
pycharm2020.2 配置使用的方法详解
2020/09/16 Python
python读写数据读写csv文件(pandas用法)
2020/12/14 Python
努比亚手机官网:nubia
2016/10/06 全球购物
New Balance加拿大官方网站:运动鞋和健身服装
2018/11/19 全球购物
吉力贝官方网站:Jelly Belly
2019/03/11 全球购物
您附近的水疗和健康场所:Spafinder(美国)
2019/07/05 全球购物
英国最受信任的在线眼镜商之一:Fashion Eyewear
2019/10/31 全球购物
MIS软件工程师的面试题
2016/04/22 面试题
县长群众路线对照检查材料思想汇报
2014/10/02 职场文书
幼儿教师小班个人总结
2015/02/05 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书
罗马假日观后感
2015/06/08 职场文书
2015年学校远程教育工作总结
2015/07/20 职场文书
2015年物业管理员工工作总结
2015/10/15 职场文书
创业计划书之餐饮馄饨店
2019/07/18 职场文书