mapboxgl实现带箭头轨迹线的代码

 更新时间:2021年01月04日 16:17:30   作者:GIS兵器库  
这篇文章主要介绍了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 获取iframe里页面中元素值的方法

    javascript 获取iframe里页面中元素值的方法

    本篇文章主要是对javascript获取iframe里页面中元素值的方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-02-02
  • 使用SVG基本操作API的实例讲解

    使用SVG基本操作API的实例讲解

    下面小编就为大家带来一篇使用SVG基本操作API的实例讲解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • vue.config.js文件重写打包工具配置信息

    vue.config.js文件重写打包工具配置信息

    vue.config.js是一个可选的配置文件,可以在其中定义一些自定义的配置选项,本文就来介绍一下如何配置,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • JS比较2个日期间隔的示例代码

    JS比较2个日期间隔的示例代码

    这篇文章主要介绍了JS比较2个日期间隔的方法,需要的朋友可以参考下
    2014-04-04
  • js数组去重的hash方法

    js数组去重的hash方法

    对于JavaScript数组去除重复项,现在有多种方法,其中一种是hash,本文主要对hash方法去除js数组重复项进行介绍,下面就跟小编一起来看下吧
    2016-12-12
  • JavaScript实现将网页加入收藏夹功能

    JavaScript实现将网页加入收藏夹功能

    浏览器出于安全和隐私的考虑,限制了用代码将网页加入浏览器的收藏夹,本文主要介绍了如何使用通过一些间接的方法实现这一功能,有需要的可以参考下
    2024-10-10
  • js实现表单提交后不重新刷新当前页面

    js实现表单提交后不重新刷新当前页面

    本文介绍了如何通过js实现表单提交后不重新刷新当前页面的方法实例.既提交了FORM保存了数据,页面也不会跳转,很实用。需要的朋友可以参考下
    2016-11-11
  • js实现获取鼠标当前的位置

    js实现获取鼠标当前的位置

    本文主要介绍了利用javascript实现获取鼠标当前的位置的具体方法,具有很好的参考作用,需要的朋友可以看看
    2016-12-12
  • javascript中sort() 方法使用详解

    javascript中sort() 方法使用详解

    sort()方法主要是用于对数组进行排序,默认情况下该方法是将数组元素转换成字符串,然后按照ASC码进行排序,这个大家都能理解,但如果数组元素是一个Object呢,转不了字符串,难道不能进行排序?答案当然是否定的,那么我们就来详细探讨下sort()方法的使用
    2015-08-08
  • 使用js实现一个简单的滚动条过程解析

    使用js实现一个简单的滚动条过程解析

    这篇文章主要介绍了使用js实现一个简单的滚动条过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09

最新评论