如何使用高德地图的 Loca 展示 gpx 文件的 3D 路径,Loca.LineLayer

如何使用高德地图的 Loca 展示 gpx 文件的 3D 路径,Loca.LineLayer

找寻了好久,终于将这个展示 3D 路径的功能实现了。

在线实例:
http://kylebing.cn/tools/map/#/gpx/gpx-viewer-3d

在这里插入图片描述

这里是用于展示 gpx 路径,关于 gpx 的相关知识可以查看之前写的相关教程:

高德地图绘制 GPX 路径,gpx 文件详解

这里要用到高德地图的可视化 API Loca 进行 3D 路径的展示,之前也写过一个关于 Loca 如何加载和使用的,这里也不再具体介绍什么是 Loca

Vue 高德地图 js API Loca 如何使用 连接线图层、脉冲连线图层

一、相关官方教程及文档、源码:

  1. Loca API 关于 LineLayer 的文档: https://lbs.amap.com/api/loca-v2/api#linelayer
  2. Loca LineLayer 官方例子: https://lbs.amap.com/demo/loca-v2/demos/cat-line/bj-bus
  3. 本文中所展示的地图项目源码:https://github.com/KyleBing/map
  4. 本文中所展示的在线项目:http://kylebing.cn/tools/map

二、实现原理

  1. Loca.LineLayer 这个对象可以实现 3D 路径的构建
  2. 数据就是 从 gpx 数据转换过来的,这里 Loca.LineLayer 接收的数据是 GeoJSONSource 格式的内容,这是个标准,参见:https://geojson.org/,它接收的点的最节点坐标数据是这样的: [lnt, lat, ele] 分别是 经纬度、高度。
  3. 给新建的 LineLayer 设置路径数据之后就可以显示路径了。
  4. Loca 和 Map 是两个东西,所以每次要加载新路径时需要清空你需要的内容。比如 Loca 的清空就是 loca.clear(),具体的可以查看我已经开源的项目:https://github.com/KyleBing/map

二、Loca.LineLayer 的使用

查看官方例子就能看到 LineLayer 的使用方法:

https://lbs.amap.com/demo/loca-v2/demos/cat-line/bj-bus

// 显示 3D 路径
showLineLayer(loca, gpxPointers){
    let pointers = gpxPointers.map(item => {
        let lnglat = new AMap.LngLat(item._lon, item._lat)
        let lnglatAfterOffset = lnglat.offset(this.offsetE, this.offsetN) // offset 偏移量 E, N 单位:米,这个方法是变更返回值,而不是原对象的值。
        let lnglatArray = lnglatAfterOffset.toArray() // 转成 [lng, lat] 这类数据
        lnglatArray.push(item.ele)  // 添加高度信息,变成 [lng, lat, ele] 数据
        return lnglatArray
    })
    console.log(pointers)
    let geoData = {
        type: "FeatureCollection",
        features: [
            {
                type: "Feature",
                properties: {
                    type: 1
                },
                geometry: {
                    type: "LineString",
                    coordinates: pointers
                }
            }
        ]
    }
    // loca lineLayer
    let lineLayer = new Loca.LineLayer({
        loca: loca,
        zIndex: 120,
        opacity: 1,
        visible: true,
        zooms: [2,20]
    })
    // GEO Data, 这是个标准文件格式,参见: https://geojson.org/
    let geo = new Loca.GeoJSONSource({
        data: geoData
    })
    // 给 Loca.LineLayer 添加数据
    lineLayer.setSource(geo, {
        color: Colors.colors.magenta,
        lineWidth: 5,

    })
    // Loca 中添加这个线的图层
    this.loca.add(lineLayer)
}

三、源码

直接贴源码是没法用的,因为我引用了许多我项目里的一些文件,可以看这里

https://github.com/KyleBing/map/blob/master/src/page/gpx/GpxViewer3D.vue

四、结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/595319.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux migrate_type进一步探索

文章接着上回Linux migrate_type初步探索 1、物理页面添加到buddy系统 我们都知道物理内存一开始是由memblock进行分配管理,后面会切换到buddy系统管理。那么接下来我们看一下,memblock管理的物理页面是怎么添加到buddy系统中的。 start_kernel() -&g…

液晶数显式液压万能试验机WES-300B

一、简介 主机为两立柱、两丝杠、油缸下置式,拉伸空间位于主机的上方,压缩、弯曲试验空间位于主机下横梁和工作台之间。测力仪表采用高清液晶显示屏,实验数据方便直观。 主要性能技术指标 最大试验力(kN) 300 试…

文件删了,回收站清空了怎么恢复?文件恢复软件一览

在日常生活和工作中,我们常常会遇到误删除文件的情况,有时甚至会因为清空了回收站而无法找回这些文件。这些文件可能包含重要的工作数据、个人照片或其他珍贵的回忆。那么,在这种情况下,我们该如何恢复这些被删除且清空回收站的文…

外婆传(封家香传)

余乃民国三十载(公元一千九百四十一)九月初九重阳佳节日出生于衡阳县长塘村封谷里。父封盖梅,在民国二十九年(公元一千九百四十)驾鹤西归,遗世独立,吾未能见其颜。母氏,因丧夫之痛&a…

C++ | Leetcode C++题解之第59题螺旋矩阵II

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<vector<int>> generateMatrix(int n) {int num 1;vector<vector<int>> matrix(n, vector<int>(n));int left 0, right n - 1, top 0, bottom n - 1;while (left < r…

微信公众号排名 SEO的5个策略

随着微信公众号在社交媒体领域的持续发展和普及&#xff0c;如何提升公众号的搜索排名&#xff0c;成为许多运营者关注的焦点。公众号排名SEO&#xff0c;即针对微信公众号进行搜索引擎优化&#xff0c;旨在提高公众号在搜索结果中的曝光率和点击率。下面&#xff0c;我们将深入…

python学习笔记-01

python 在学习之前要了解的事项&#xff1a; 1.python缩进语法要求较为严格 2.是解释型语言 3.python2版本和python3版本不兼容 本系列笔记全部基于python3 1.hello world 安装好python之后&#xff0c;可以直接打开python&#xff0c;也可以通过cmd进入python。 print(&qu…

kafka日志存储

前言 kafka的主题(topic)可以对应多个分区(partition)&#xff0c;而每个分区(partition)可以有多个副本(replica)&#xff0c;我们提生产工单创建topic的时候也是要预设这些参数的。但是它究竟是如何存储的呢&#xff1f;我们在使用kafka发送消息时&#xff0c;实际表现是提交…

Flutter分模块开发、模块可单独启动、包含Provider

前言 目前Flutter都是在一个项目中&#xff0c;创建不同目录进行模块开发&#xff0c;我进行Android原生开发时&#xff0c;发现原生端&#xff0c;是可以将每个模块独立运行起来的&#xff0c;灵感来自这&#xff1b; 折腾了几天&#xff0c;终于给整出来了。 1、创建根目录…

Go语言基本语法(三)指针

什么是指针 在Go语言中&#xff0c;"指针是一种存储变量内存地址的数据类型"&#xff0c;意味着指针本身是一个特殊的变量&#xff0c;它的值不是数据本身&#xff0c;而是另一个变量在计算机内存中的位置&#xff08;地址&#xff09;。形象地说&#xff0c;就像存…

multipass和multipassd命令的区别

multipassd通常是multipass服务的后台守护进程&#xff0c;它负责管理和控制虚拟机实例。 命令区别 例&#xff1a; multipass restart my-vm 这个命令用于重启Multipass中的虚拟机实例。例如有一个名为my-vm的虚拟机实例。 multipassd restart 这会重新启动Multipass后台…

一文学会最强大的 node.js 后端框架 nest.js

文章目录 nest cli项目基本结构IOC & DI基础注册值注册时 key 的管理动态注册类工厂函数方式注册设置别名导出 provider 模块功能模块模块的导入导出模块类中使用注入全局模块动态模块 中间件定义中间件注册中间件MiddlewareConsumer 类全局中间件 异常过滤器抛出异常自定义…

华三配置DHCP(基础)

华三交换机配置DHCP&#xff08;基础&#xff09; 1.组网拓扑图&#xff08;交换机-PC&#xff09; 2.通过交换机开启DHCP功能&#xff0c;使PC自动获取192.168.10.0&#xff08;vlan10&#xff09;网段地址 2.使用命令 <H3C>system-view [H3C]vlan 10&#xff08;建立…

Python_4-远程连接Linux

文章目录 使用Python通过SSH自动化Linux主机管理代码执行ls结果&#xff1a;文件传输&#xff1a; 使用Python通过SSH自动化Linux主机管理 在系统管理与自动化运维中&#xff0c;SSH&#xff08;Secure Shell&#xff09;是一个常用的协议&#xff0c;用于安全地访问远程计算机…

【0day】湖南建研工程质量检测系统InstrumentUsageRecordExport接口处存在任意文件读取漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

发那科Fanuc数控网络IP配置设定教程

1.在主面板如图按system键&#xff0c;进入系统界面 2.按右翻页切换键&#xff0c;切换到内嵌选项&#xff0c;按内嵌按钮跳转至设置IP界面&#xff0c;设置ip 3.按Focas2按钮&#xff0c;跳转至设置端口号和超时时间界面。设置端口号和时间之后&#xff0c;重启设备。注意&…

MES生产系统与数字孪生双重结合:智慧制造工厂的新引擎

随着数字化浪潮的推动&#xff0c;制造行业正在经历着前所未有的变革。在这个变革的浪潮中&#xff0c;MES生产制造系统与数字孪生技术的深度融合成为了制造工厂未来发展的核心驱动力。这种结合不仅提升了生产效率&#xff0c;优化了资源配置&#xff0c;降低了运营成本&#x…

2024年 Java 面试八股文——SpringCloud篇

目录 1.Spring Cloud Alibaba 中的 Nacos 是如何进行服务注册和发现的&#xff1f; 2.Spring Cloud Alibaba Sentinel 的流量控制规则有哪些&#xff1f; 3.Spring Cloud Alibaba 中如何实现分布式配置管理&#xff1f; 4.Spring Cloud Alibaba RocketMQ 的主要特点有哪些&…

HCIP的学习(12)

OSPF优化 ​ OSPF的优化主要目的是为了减少LSA的更新量。 路由汇总-----可以减少骨干区域的LSA数量特殊区域-----可以减少非骨干区域的LSA数量 OSPF路由汇总 域间路由汇总-----在ABR设备上进行操作 [GS-R2-ospf-1-area-0.0.0.1]abr-summary 192.168.0.0 255.255.224.0 [GS-…

什么是抖音橱窗?它和抖音小店有什么区别?普通人更适合做哪个?

大家好&#xff0c;我是电商糖果 相信有很多想在抖音卖货的朋友&#xff0c;都会搞不清抖音橱窗是什么&#xff1f; 甚至会把它和抖音小店当成一个项目&#xff0c;也不知道哪个更适合自己。 自己越了解发现越迷糊&#xff0c;有的说不需要直播&#xff0c;粉丝&#xff0c;…