高德地图 动态绘制多个路线轨迹

2023-10-27

最近在用高德地图的API,顺便记录下。

平时我们只是通过如下代码,给path一串经纬度数组, 静态绘制修改路径,但怎么才能通过接收数据(例如Json数据)来动态绘制 多个路径呢? 这里有两种方法。

//设置数据
 pathSimplifierIns.setData([{
     name: '路线0',
     path: [
         [116.405289, 39.904987],
         [113.964458, 40.54664],
         [111.47836, 41.135964]
     ]
 }]);

方法一:

该方法是官方文档的Dome,
思路: 用 $.getJSON(‘url’,function(){})函数,在其url中直接输入.json文件(文件里是 setData()可操作数组结构 的数据) 的路径,通过改变文件内容或 url 来动态绘制路径。

查看官方Dome:点击这里
查看数据的网址:点击这里
效果图如下:
效果图

但是平时我们传的Json数据 的数据结构都是 setData()函数不可操作的,而且还夹杂了很多其他的不相关参数,所以方法一并不实用。

方法二:

这里我们只是将JSON的数据结构转换 为 setData()可操作的数据结构。
思路:其中str为一串Json数据(就是字符串),首先将 Json字符串 转换为 Json对象,但由于该Json对象的数据结构 与 setData()可操作 数组的数据结构 不一致,所以要转换一下结构;转换结构后 直接将其传给 setData()即可。
效果图如下:
这里写图片描述

源代码如下

<!doctype html>
<html lang="zh-CN">
<head>
    <!-- 原始地址://webapi.amap.com/ui/1.0/ui/misc/PathSimplifier/examples/simple-data.html -->
    <base href="//webapi.amap.com/ui/1.0/ui/misc/PathSimplifier/examples/" />
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
    <title>简单数据附加</title>
    <style>
    html,
    body,
    #container {
        width: 100%;
        height: 100%;
        margin: 0px;
    }
    </style>
</head>

<body>
    <div id="container"></div>
    <script type="text/javascript" src='//webapi.amap.com/maps?v=1.4.3&key=您申请的key值'></script>
    <!-- UI组件库 1.0 -->
    <script src="//webapi.amap.com/ui/1.0/main.js?v=1.0.11"></script>
    <script type="text/javascript">
    //创建地图
        var map = new AMap.Map('container', {
            zoom: 4
        });

        AMapUI.load(['ui/misc/PathSimplifier', 'lib/$'], function(PathSimplifier, $) {

            if (!PathSimplifier.supportCanvas) {
                alert('当前环境不支持 Canvas!');
                return;
            }

            var pathSimplifierIns = new PathSimplifier({
                zIndex: 100,
                //autoSetFitView:false,
                map: map, //所属的地图实例

                getPath: function(pathData, pathIndex) {

                    return pathData.path;
                },
                getHoverTitle: function(pathData, pathIndex, pointIndex) {

                    if (pointIndex >= 0) {
                          //point 
                        return pathData.name + ',点:' + pointIndex + '/' + pathData.path.length;
                    }

                    return pathData.name + ',点数量' + pathData.path.length;
                },
                renderOptions: {

                    renderAllPointsIfNumberBelow: 100 //绘制路线节点,如不需要可设置为-1
                }
            });

            window.pathSimplifierIns = pathSimplifierIns;
            /****************************开始: 用Json数据动态绘制多个路径 ****************************/
             /*封装:Json字符串 转换为 Json对象*/
            var tranObj = function(str){
                return JSON.parse(str);
            }

            /*封装:构造setData()可用数组*/
            var seltArr = function(obj){
                var arr = []; 
                for(var i=0;i<obj.length;i++){
                    arr.push({
                                name:obj[i].name,
                                path:[[obj[i].flng,obj[i].flat],[obj[i].tlng,obj[i].tlat]]
                            });
                }
                return arr;
            }

            /*str为Json数据: 
                flng(出发地经度)、flat(出发地纬度)
                tlng(目的地经度)、tlat(目的地纬度)
                name:路径名称
                missTimes:为其他数据,忽略*/

            var str = '[{ "name": "A->B","missTimes": "1", "flng": 116.856275, "flat": 39.874345, "tlng": 116.856245,"tlat": 39.87207},{ "name": "A->B","missTimes": "1", "flng": 116.857275, "flat": 39.876345, "tlng": 116.856345,"tlat": 39.87107},{"name": "C->D","missTimes": "2", "flng": 116.856575, "flat": 39.874345, "tlng": 116.856245,"tlat": 39.87507}]';

            /*Json字符串 转换为 Json对象*/
            var obj = tranObj(str); 

            /*构造setData()可用数组*/
            var myArr = seltArr(obj); 

            /*将可用数组传给 setData()绘制路线*/
            pathSimplifierIns.setData(myArr);
        /****************************  结束 ****************************/
            pathSimplifierIns.on('pointClick', function(e, info) {

                console.log('Click: ' + info.pathData.points[info.pointIndex].name);
            });
            /*开个巡航器*/
             var navg1 = pathSimplifierIns.createPathNavigator(0, {
                loop: true, //循环播放
                speed: 100 //巡航速度,单位千米/小时
            });

            navg1.start();
        });
    </script>
</body>

</html>

看不懂上面代码的查看官方文档即可,
PathSimplifier(轨迹展示):点击这里查看 官方相关文档

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

高德地图 动态绘制多个路线轨迹 的相关文章

  • TypeError: props.render 不是一个函数(React hook 形式)

    我将方法作为我用react hook form制作的形式的道具传递 当从react hook form添加控制器时 它给了我 TypeError props render不是一个函数 我在网上找不到任何解决方案 因此感谢任何帮助 impor
  • R:将 JSON 时间格式转换为 POSIX

    我有一个 JSON 字符串 并将其放入数据框中 我能够做到这一点 但我在使用 apply 函数之一将所有时间字符串转换为 POSIX 格式时遇到问题 See here https stackoverflow com questions 90
  • 我想检查 $('#td1').text() === "x" 是否?

    我想检查innerHtml是否有X或O 所以我不能再次添加任何其他东西 但它不起作用 添加检查代码后它就停止了 我在这里尝试做一个简单的XO游戏来更熟悉javascript和jquery 我也不确定是否可以用 jQuery 做到这一点
  • Meteor:应用程序无法在 0.9.1.1 版本上运行

    出现类似错误 Error TypeError undefined is not a function evaluating Template create anonymous function iron dynamic template j
  • Google App Engine:修改云运行环境

    我正在尝试部署一个使用自定义 Node js 服务器的 Next js 应用程序 我想将自定义构建变量注入应用程序 next config js const NODE ENV process env NODE ENV const envTy
  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • 标签获取 href 值

    我有以下 html div class threeimages a img alt Australia src Images Services 20button tcm7 9688 gif a div class text h2 a hre
  • JavaScript 重定向到新窗口

    我有以下代码 它根据下拉列表的值重定向到页面 我如何使其在新窗口中打开 function goto form var index form select selectedIndex if form select options index
  • 在requestAnimationFrame中使用clearRect不显示动画

    我正在尝试在 HTML5 画布上做一个简单的 javascript 动画 现在我的画布是分层的 这样当我收到鼠标事件时 背景层不会改变 但带有头像的顶层会移动 如果我使用 requestAnimationFrame 并且不清除屏幕 我会看到
  • 将div设置为隐藏,延时后可见

    我试图在 X 时间后 也许甚至在随机时间之后 但现在我们只做固定时间 在黑色背景上出现一个黄色方块 function initialSetup if document getElementById yellow null document
  • Babel 7 Jest Core JS“TypeError:wks不是函数”

    将我的项目升级到 Babel 7 后 通过 Jest 运行测试会抛出以下错误 测试在 Babel 6 中运行没有任何问题 但在 Babel 7 中失败并出现以下错误 TypeError wks is not a function at Ob
  • 如何使输入字段和提交按钮变灰

    我想变灰这两件事 http doorsplit heroku com 歌曲输入字段和提交按钮 直到用户输入艺术家 有没有一种简单的方法可以通过 JQuery 来做到这一点 艺术家输入字段的id是 request artist 你可以这样做
  • Electron - 为什么在关闭事件时将 BrowserWindow 实例设置为 null

    The 电子文档 https electronjs org docs api browser window 提供以下代码示例来创建新窗口 const BrowserWindow require electron let win new Br
  • HTML 离线应用程序缓存,列出下载的文件

    作为我正在构建的离线 Web 应用程序的加载屏幕的一部分 使用缓存清单 http developer apple com library safari documentation iPhone Conceptual SafariJSData
  • 如何获取给定 DOM 元素的所有定义的 CSS 选择器?

    如何使用 jQuery 获取给定 DOM 元素的所有定义的 CSS 选择器 定义后 我的意思是在应用于任何样式表的所有 CSS 选择器document 在某种程度上 这类似于 FireBug 实现的功能 其中显示所选 DOM 元素的所有应用
  • 为什么我不能在 AngularJS 中使用 data-* 作为指令的属性名称?

    On the t他的笨蛋 http plnkr co edit l3KoY3 p preview您可以注意到属性名称模式的奇怪行为data 在指令中 电话 Test of data named attribute br
  • 在 Android 应用程序资源中使用 JSON 文件

    假设我的应用程序的原始资源文件夹中有一个包含 JSON 内容的文件 我如何将其读入应用程序 以便我可以解析 JSON See 开放原始资源 http developer android com reference android conte
  • 在 React.js 中编辑丰富的数据结构

    我正在尝试为数据结构创建一个简单的基于网格的编辑器 但我在使用 React js 时遇到了一些概念问题 他们的文档对此没有太大帮助 所以我希望这里有人可以提供帮助 首先 将状态从外部组件传输到内部组件的正确方法是什么 是否有可能将内部组件中
  • 导致回发到与弹出窗口不同的页面

    我有一个主页和一个详细信息页面 详细信息页面是从主页调用的 JavaScript 弹出窗口 当单击详细信息页面上的 保存 按钮时 我希望主页 刷新 是否有一种方法可以调用主页的回发 同时还可以从详细信息页面维护保存回发 Edit 使用win
  • 使用 powershell 将 XML 转换为特定的 JSON 结构

    需要有关将 xml 转换为特定 json 结构的帮助 XML 看起来像这样

随机推荐

  • Flask 物联网局部应用情景

    实践 Raspberry Pi 托管 Flask 网络服务器控制设备 云托管 Flask 和 SQLite 网络服务器使用Web API 处理 ESP8266 数据 Raspberry Pi 托管 Flask 网络服务器使用SQLite存储
  • ChatGPT有哪些作用?

    ChatGPT有哪些作用 介绍 在当今信息技术飞速发展的时代 自然语言处理和人工智能已经成为许多领域的关键技术 ChatGPT是一种先进的语言生成模型 通过人工智能技术为用户提供了许多有用的功能和应用 本文将探讨ChatGPT的作用及其在不
  • 【ASP.NET Core】MVC模型绑定:自定义InputFormatter读取CSV内容

    Python微信订餐小程序课程视频 https edu csdn net course detail 36074 Python实战量化交易理财系统 https edu csdn net course detail 35475 在上一篇文章中
  • 【浅学Java】Servlet详解

    Servlet详解 1 什么是Servlet 2 创建一个Servlet程序 1 创建项目 Maven 2 引入依赖 3 创建一些新目录 4 编写代码 5 打包 6 部署 7 验证程序 3 简化创建Servlet的步骤 1 安装plugin
  • .NET Desktop程序员:互联网大环境下软件生产力的创造者

    目录 引言 桌面软件如何适配今天的互联网 让 NET桌面软件工程拥有互联网基因 WebRuntime是什么 具体案例 让应用适配不同的应用场景 基于应用的Web页面 Cloud WinForm 强大的Web生产力 总结 引言 对每个 NET
  • 征服数据宇宙,新华三存储护卫队早有准备?

    999 往期 精 选
  • 【C++】STL—— unordered_map的介绍和使用、 unordered_map的构造函数和迭代器、 unordered_map的增删查改函数

    文章目录 1 unordered map的介绍 2 unordered map的使用 2 1unordered map的构造函数 2 2unordered map的迭代器 2 3unordered map的容量和访问函数 2 4unorde
  • 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

    程序分析 用情况语句比较好 如果第一个字母一样 则判断用情况语句或if语句判断第二个字母 Monday Tuesday Wednesday Thursday Friday Saturday Sunday T 2 S 2 public cla
  • 计算机刚开始学什么时候,新手如何开始学电脑 新手学电脑从何入门

    虽然现在手机已经占据了互联网的半壁江山 但是生活中免不了需要接触电脑 用U盘拷贝份文件 用打印机打印份文档 在电脑上下载一首歌 电影 图片等 都离不开电脑 很多人觉得电脑跟自己无关 也许当你需要用的时候 才会觉得 书到用时方恨少 那么对于一
  • U-Boot 图形化配置及其原理

    目录 U Boot 图形化配置体验 如何使能dns 命令 menuconfig 图形化配置原理 make menuconfig 过程分析 Kconfig 语法简介 1 mainmenu 2 调用其他目录下的Kconfig 文件 3 menu
  • TypeError: buildURL is not a function

    报错图 uni app 使用axios发请求 运行到微信开发者工具报错 使用了网络上axios适配器方案 没有效果 问题没有解决 请求没发出去 这个问题已经解决uni app和微信开发者工具兼容axios 主页文章有仔细查看
  • java中的注释及其快捷键

    1 单行注释 快捷键 Ctrl 再次点击取消注释 2 多行注释 快捷键 Ctrl Shift 要取消注释只能手动删除 3 文档注释 内容 内容 内容 作用 为类或方法添加说明 快捷键 enter
  • sigmod 函数与softmax 函数对比

    sigmod 函数与softmax 函数之间既有类似 又有差异 是两种典型的深度神经网络的activation functions 通俗而言 sigmod 函数常用于二分类 softmax 函数常用于多分类 两者都起到了压缩的作用 sigm
  • 基于JAVA Seleium 的自动化测试

    目录 1 什么是Seleium 2 Selenium环境引入 3 selenium基本使用 4 框架优化 5 元素其他操作 6 关于获取不到元素 1 什么是Seleium Selenium是一个用于Web应用程序测试的工具 Selenium
  • Week5_Test2

    package JAVA API Test import com sun xml internal ws api model wsdl WSDLOutput import java io import java util Arrays au
  • django官网网址

    django官网网址 https www djangoproject com start overview https docs djangoproject com en dev ref models querysets django db
  • STC89C52原理

    STC89C52单片机介绍 STC89C52RC是STC公司生产的一种低功耗 高性能CMOS8位微控制器 具有8K字节系统可编程Flash存储器 STC89C52使用经典的MCS 51内核 标准功能 具有以下标准功能 8k字节Flash 5
  • c#的二进制序列化组件MessagePack介绍

    c 的序列化有多种 我一般喜欢用第三方组件 一个公共组件要拿出来用 而且支持很多语言 甚至以此谋生 肯定有其优势 有或者说存在必然有其合理性 经过几年开发 我更加喜欢第三方的东西 类似序列化的东西 开篇总是牢骚 大家要习惯哈 最近在写一个小
  • OpenWrt路由器——基础网络配置

    OpenWrt 路由器基础配置 基础配置方法 OpenWrt设置方法图解 WAN口配置 需要注意的是WAN口可以按默认协议配置DHCP客户端即可 若重启后发现网络无法正常上网 在WAN口选择桥接模式 即可解决问题 无线配置 可能会出现某个W
  • 高德地图 动态绘制多个路线轨迹

    最近在用高德地图的API 顺便记录下 平时我们只是通过如下代码 给path一串经纬度数组 静态绘制修改路径 但怎么才能通过接收数据 例如Json数据 来动态绘制 多个路径呢 这里有两种方法 设置数据 pathSimplifierIns se