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

news2024/9/23 13:31:15

如何使用高德地图的 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

四、结果

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Voice Conversion、DreamScene、X-SLAM、Panoptic-SLAM、DiffMap、TinySeg

本文首发于公众号:机器感知 Voice Conversion、DreamScene、X-SLAM、Panoptic-SLAM、DiffMap、TinySeg Converting Anyones Voice: End-to-End Expressive Voice Conversion with a Conditional Diffusion Model Expressive voice conversion (VC) conducts speak…

速卖通自养号测评海外环境:成本、步骤、技巧全掌握

相信不少涉足跨境业务的企业和商家都对速卖通耳熟能详。作为当下炙手可热的跨境电商平台,速卖通在国内电商市场渐趋饱和的背景下,吸引了众多国内卖家的目光。他们纷纷入驻速卖通,希望借助这一平台的力量,成功打通跨境业务渠道。然…

腾讯会议崩溃解决

突然腾讯会议就罢工了,腾讯会议的主界面可以登陆上去,不会异常退出: 这时无论是通过别人提供的会议号“加入会议” 还是 “快速会议”,都会出现下面的异常,并崩溃退出: 在网上搜“SteinwayMSVCRT”导致的腾讯会议的错误,会告诉你使用金山毒霸的XX医生解决,下载了金山毒…

新代数控Syntec网络IP配置设定教程

点击面板【维护】→【网络设定】→【IP地址取得方法:直接指定IP地址】→【IP地址:输入采集需要设定的IP】→【子网掩码:255.255.255.0】→【预设网关】 输入方法:点击面板上的【ENTER】输入键,输入相关参数即可。

git使用注意事项事项

以下操作均在gitee平台上实现 文章目录 1、本地仓库和远程仓库有冲突2、git提交自动忽略某些文件3、git无法push提交到远程仓库 1、本地仓库和远程仓库有冲突 在web端修改了文件内容或者删除了文件,本地仓库需要重新把远程仓库拉取到本地,或者强制提交到…

Mars3d实现用一个button控制一个map.control的显示与隐藏

原生js,想做一个button,控制比如compass的显示与隐藏 点一下显示 再次单击的时候就隐藏掉 写了一个function控制显示隐藏 function addCompass(){ if(compass.showtrue) { compass.showfalse; } else{ compass.showtrue; } } 功能示例(Vue版) | Mars3D三维可视化平台 | 火星…

面试中算法(无序数组排序后最大相邻差)

有一个无序整型数组,求该数组排序后的任意两个相邻元素的最大差值;要求时间复杂度和空间复杂度尽可能低。 (1)任意一种时间复杂度为O (nlogn)的排序算法(如快速排序)给原数组排序,然…

知识库工具:付费的HelpLook AI知识库比免费的牵牛易帮好在哪里

在知识管理的领域中,选择合适的知识库工具对于企业来说很重要。市面上有很多知识库产品,有付费的和免费的,但是还是有很多企业会选择使用付费的,而不是免费的。这是为什么呢?这就是今天要探讨的问题,下面就…

机器学习(二) ----------K近邻算法(KNN)+特征预处理+交叉验证网格搜索

目录 1 核心思想 1.1样本相似性 1.2欧氏距离(Euclidean Distance) 1.3其他距离 1.3.1 曼哈顿距离(Manhattan Distance) 1.3.2 切比雪夫距离(Chebyshev distance) 1.3.3 闵式距离(也称为闵…

1.4 初探JdbcTemplate操作

实战目的 掌握Spring框架中JdbcTemplate的使用,实现对数据库的基本操作。理解数据库连接池的工作原理及其在实际开发中的重要性。通过实际操作,加深对Spring框架中ORM(对象关系映射)的理解。 关键技术点 JdbcTemplate操作&…

AI人才争夺战,华尔街入局:豪掷百万美元年薪抢人 | 最新快讯

量子位公众号 QbitAI 继硅谷之后,华尔街也入局“AI 人才争夺大战”。 他们的目标非常明确——抢的就是高精尖的 AI 专家。 △图源:Business Insider 现在这条“街”上,不论是银行、对冲基金还是私募股权公司都已纷纷下场,可谓是豪…

Netty进阶-协议设计与解析

Netty进阶 一、黏包半包的深入理解(本质原因:TCP是流式协议,消息无边界)1、TCP滑动窗口2、协议设计与解析2.1、Redis协议2.2、HTTP协议2.3、自定义协议2.3.1、自定义协议要求2.3.2、自定义消息对象(编解码器、消息抽象…

谷歌明年6月关闭 Google Fit 运动记录API,要求开发者迁移至Android Health平台 | 最新快讯

5 月 6 日消息,谷歌近日发布官方新闻稿,宣布将在明年 6 月使用 Android Health 平台取代 Google Fit 运动记录 API,开发人员应当尽早启动迁移计划。 谷歌自 2022 年起逐渐扩大对 Android Health 平台的投资,旨在减少平台碎片化&am…

Python turtle库 实现 随机彩色文字平面批量输出

# -*- coding: utf-8 -*- """ Spyder Editor This is a temporary script file. """ import turtle import random import turtle as t t.colormode(255) turtle.bgcolor("white") h255 l50#字号 m60#间隔 n500 t.penup() turtle.hide…

2024-05-06 问AI: 介绍一下深度学习中的LSTM网络

文心一言 当谈到深度学习中的LSTM(Long Short-Term Memory)网络时,它是一种特殊的循环神经网络(RNN)架构,旨在解决传统RNN在处理长序列时遇到的梯度消失和梯度爆炸问题。LSTM网络因其能够捕捉序列数据中的…

面试官:关于HTTPS/HTTP2/HTTP3你懂多少?

公众号:程序员白特,欢迎一起交流学习~ HTTPS是什么 HTTP为什么不安全? https被认为是通信安全的http,除了http多了s和默认端口改成了443之外,其他都是沿用的http(除了明文和不安全)&#xff0…

Qt QInputDialog详解

1.简介 QInputDialog是一个对话框类,用于从用户那里获取一个单一的值。这个值可以是字符串、数字、或者一个列表中的选项。QInputDialog提供了一个方便的方式来快速创建一个输入对话框,无需自己从头开始构建。 QInputDialog支持多种输入类型&#xff1…

软件设计师-应用技术-数据流图题1

基础知识及技巧: 0. 概念: 在结构化分析中,数据流图用来记录系统中的数据和数据在特定的过程中的流动,即数据如何被采集、处理、保存和使用的(围绕信息系统的功能)。 1. 元素实例: 补充知识:** 外部实体…

K. 子串翻转回文串

给一个串 s  s1s2... sn,你可以选定其一个非空子串,然后将该子串翻转。具体来说,若选定的子串区间为 [l, r](1 ≤ l ≤ r ≤ n),则翻转后该串变为 s1s2... sl - 1srsr - 1... slsr  1... sn…

【企业动态】爱尔兰客户到访东胜物联,共拓能源管理等解决方案

近日,来自爱尔兰的房屋数据监测客户莅临东胜物联(杭州黄龙国际中心)进行参观考察,双方就未来的广泛合作进行了深入的沟通交流。 来访期间,东胜物联CEO支江峰先生热情接待了客户,并陪同他们参观了产品展厅&…