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 相关文章推荐
HTML TO JavaScript 转换
Jun 26 Javascript
通过JavaScript控制字体大小的代码
Oct 04 Javascript
js 判断checkbox是否选中的操作方法
Nov 09 Javascript
js用Date对象处理时间实现思路及代码
Jan 31 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
Nov 21 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
Feb 26 Javascript
jQuery配合coin-slider插件制作幻灯片效果的流程解析
May 13 Javascript
使用JQuery 加载页面时调用JS的实现方法
May 30 Javascript
C#实现将一个字符转换为整数
Dec 12 Javascript
vue 音乐App QQ音乐搜索列表最新接口跨域设置方法
Sep 25 Javascript
小程序红包雨的实现示例
Feb 19 Javascript
vuex实现购物车的增加减少移除
Jun 28 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使用Redis长连接的方法详解
2018/02/12 PHP
Ext JS Grid在IE6 下宽度的问题解决方法
2009/02/15 Javascript
jQuery 常见学习网站与参考书
2009/11/09 Javascript
EXT中xtype的含义分析
2010/01/07 Javascript
JS判断不能为空实例代码
2013/11/26 Javascript
jQuery选择器源码解读(八):addCombinator函数
2015/03/31 Javascript
javascript删除元素节点removeChild()用法实例
2015/05/26 Javascript
简介JavaScript中fixed()方法的使用
2015/06/08 Javascript
初识Javascript小结
2015/07/16 Javascript
详解iframe与frame的区别
2016/01/13 Javascript
jQuery layui常用方法介绍
2016/07/25 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
js中toString()和String()区别详解
2017/03/23 Javascript
JavaScript生成图形验证码
2020/08/24 Javascript
vue :src 文件路径错误问题的解决方法
2018/05/15 Javascript
微信小程序实现拖拽功能
2019/09/26 Javascript
Vue-cli3多页面配置详解
2020/03/22 Javascript
[48:52]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第一局
2016/02/25 DOTA
[52:26]完美世界DOTA2联赛决赛 FTD vs Phoenix 第一场 11.08
2020/11/11 DOTA
python中urllib模块用法实例详解
2014/11/19 Python
Python标准库sched模块使用指南
2017/07/06 Python
Python编写登陆接口的方法
2017/07/10 Python
python实现发送邮件功能
2017/07/22 Python
Python设计模式之观察者模式简单示例
2018/01/10 Python
PHP实现发送和接收JSON请求
2018/06/07 Python
Python3使用TCP编写一个简易的文件下载器功能
2019/05/08 Python
Django Admin中增加导出CSV功能过程解析
2019/09/04 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
2019/10/24 Python
利用CSS3实现开门效果实例源码
2016/08/22 HTML / CSS
HTML5实现动画效果的方式汇总
2016/02/29 HTML / CSS
Maxpeedingrods美国:高性能汽车零件
2020/02/14 全球购物
2014年大学生自我评价
2014/01/19 职场文书
幼儿教师师德师风自我剖析材料
2014/09/29 职场文书
生产现场禁烟通知
2015/04/23 职场文书
老人院义工活动感想
2015/08/07 职场文书
Nginx如何配置Http、Https、WS、WSS的方法步骤
2021/05/11 Servers