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 相关文章推荐
Exitjs获取DataView中图片文件名
Nov 26 Javascript
jquery each()源代码
Feb 14 Javascript
Javascript实现滑块滑动改变值的实现代码
Apr 12 Javascript
引用 js在IE与FF之间的区别详细解析
Nov 20 Javascript
js实现网页自动刷新可制作节日倒计时效果
May 27 Javascript
jQuery+PHP实现动态数字展示特效
Mar 14 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
Jul 01 Javascript
JavaScript中removeChild 方法开发示例代码
Aug 15 Javascript
原生Javascript插件开发实践
Jan 18 Javascript
vue注册组件的几种方式总结
Mar 08 Javascript
Vue-component全局注册实例
Sep 06 Javascript
highcharts.js数据绑定方式代码实例
Nov 13 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
解析php5配置使用pdo
2013/07/03 PHP
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
2015/03/03 PHP
php搜索文件程序分享
2015/10/30 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
锋利的jQuery 要点归纳(二) jQuery中的DOM操作(下)
2010/03/23 Javascript
jquery插件制作教程 txtHover
2012/08/17 Javascript
Js nodeType 属性全面解析
2013/11/14 Javascript
js获取窗口相对于屏幕左边和上边的位置坐标
2014/05/15 Javascript
JavaScript中setUTCFullYear()方法的使用简介
2015/06/12 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
2015/12/07 Javascript
javascript实现下拉提示选择框
2015/12/29 Javascript
动态创建按钮的JavaScript代码
2016/01/29 Javascript
JavaScript_object基础入门(必看篇)
2016/06/13 Javascript
jQuery基于Ajax方式提交表单功能示例
2017/02/10 Javascript
JS仿JQuery选择器功能
2017/03/08 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
2017/10/18 Javascript
vue的mixins属性详解
2018/03/14 Javascript
vue实现搜索过滤效果
2019/05/28 Javascript
layUI实现前端分页和后端分页
2019/07/27 Javascript
小程序使用分包的示例代码
2020/03/23 Javascript
微信小程序开发(一):服务器获取数据列表渲染操作示例
2020/06/01 Javascript
[02:40]2014DOTA2 国际邀请赛中国区预选赛 四大豪门抵达华西村
2014/05/23 DOTA
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
详解用Python练习画个美队盾牌
2019/03/23 Python
Python中的引用知识点总结
2019/05/20 Python
python关于调用函数外的变量实例
2019/12/26 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
2020/02/23 Python
记一次Django响应超慢的解决过程
2020/09/17 Python
Python三维绘图之Matplotlib库的使用方法
2020/09/20 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
2020/10/19 Python
使用HTML5技术开发一个属于自己的超酷颜色选择器
2013/09/22 HTML / CSS
财务与信息服务专业推荐信
2013/11/28 职场文书
主要负责人任命书
2014/06/06 职场文书
2014矛盾纠纷排查调处工作总结
2014/12/09 职场文书
Mysql systemctl start mysqld报错的问题解决
2021/06/03 MySQL