§4 画出你的轨迹——标注轨迹及演示动画

2023-10-26

4.1 折线标注

4.1.1 创建一个简单的折线

参考百度地图官方文档

var polyline = new BMapGL.Polyline([
      new BMapGL.Point(116.399, 39.910),
      new BMapGL.Point(116.405, 39.920),
      new BMapGL.Point(116.425, 39.900)
    ], {
      strokeColor: "blue",
      strokeWeight: 2,
      strokeOpacity: 0.5
    }
);
map.addOverlay(polyline);

观察代码可以发现,首先需要创建一个Polyline对象,该对象需要传入两个参数,分别是Point对象数组,和设置折线样式的参数数组。
其中strokeColor表示折线颜色,strokeWeight表示折线宽度,单位是像素,strokeOpacity表示折线透明度,0~1透明度依次增加

运行效果如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i9t6trS2-1587952425105)($resource/1.png)]

图中蓝色的就是标注的折线

4.1.2 连接数据库批量创建折线

假设此时需求是将数据库的点按照顺序依次连接起来
首先将创建折线的代码部分打包成一个函数,并且函数的传入变量是位置坐标数组

function addmyline(posarray) {
    positions = new Array();
    for (i = 0; i < posarray.length; i++) {
        pos_x = posarray[i].split(",")[0];
        pos_y = posarray[i].split(",")[1];
        positions.push(new BMapGL.Point(pos_x, pos_y));
    }

    var polyline = new BMapGL.Polyline(positions, {
        strokeColor: "blue",
        strokeWeight: 2,
        strokeOpacity: 0.5
    });
    map.addOverlay(polyline);
}

笔者所用的数据的格式是诸如116.404,39.915,因此笔者采用了传入posarray数组,该数组内的每个元素都是一个诸如116.404,39.915的字符串,再将字符串拆分为经纬度。
上述代码中的positions是一个Point对象数组

然后用php连接数据库,执行SQL语句,并遍历结果,输出js语句:

<?php
    $poses = "";
    //查询
    $sqla_co = "select * from gis";
    $query_co = mysql_query($sqla_co, $conn);
    while ($row = mysql_fetch_array($query_co)) {
        $poses = $poses . '\'' . $row['xy'] . '\',';
    }
    $poses = substr($poses, 0, -1);
    echo "testarray = new Array(" . $poses . ");";
    echo "addmyline(testarray);";
?>

这个PHP代码的思路是从数据库中获得数据,并通过$poses = $poses . '\'' . $row['xy'] . '\',';语句,将这些坐标数据连接成可用于创建js数组的格式的字符串形式,例如'117.465321,35.625374','117.012519,35.41384',然后再通过echo "testarray = new Array(" . $poses . ");";组合成一个创建数组的js语句,然后再调用。

运行效果如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bER9RXc7-1587952425107)($resource/2.png)]

4.2 轨迹演示动画

参考百度地图官方文档

首先要引入动画库,在

<script type="text/javascript" src="//api.map.baidu.com/api?v=1.0&type=webgl&ak=您的AK"></script>

之后添加以下代码

<script type="text/javascript" src="//api.map.baidu.com/library/TrackAnimation/src/TrackAnimation_min.js"></script>

首先创建一个折线对象

var path = [{
    'lng': 116.297611,
    'lat': 40.047363
}, {
    'lng': 116.302839,
    'lat': 40.048219
}, {
    'lng': 116.308301,
    'lat': 40.050566
}];
var point = [];
for (var i = 0; i < path.length; i++) {
    point.push(new BMapGL.Point(path[i].lng, path[i].lat));
}
var pl = new BMapGL.Polyline(point);

只需创建对象即可,不需要添加到地图中

然后再创建一个动画对象

var trackAni = new BMapGLLib.TrackAnimation(bmap, pl, {
    overallView: true, // 动画完成后自动调整视野到总览
    tilt: 30,          // 轨迹播放的角度,默认为55
    duration: 20000,   // 动画持续时长,默认为10000,单位ms
    delay: 3000        // 动画开始的延迟,默认0,单位ms
});

然后我们再在网页中添加两个div,并绑定点击事件来控制动画的播放和停止

<div onclick="trackAni.start()">开始轨迹动画</div>
<div onclick="trackAni.cancel()">停止轨迹动画</div>

运行效果如下,点击开始轨迹动画,地图就会出现动画演示
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NwS66g77-1587952425109)($resource/3.png)]

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

§4 画出你的轨迹——标注轨迹及演示动画 的相关文章

  • 如何修复无效的 API 密钥、IP 或操作权限错误?

    这是币安加密货币交易所 API 我试图获取帐户信息 但我无法做到这一点 它是官方 C Api 这是github链接 https github com binance exchange binacpp 这是终端上的错误 回答问题时 请轻松一点
  • 如何安装适用于 Windows C++ 的最新版本 OpenGL?

    我正在使用 Visual Studio 2010 运行 Windows 7 包含的 OpenGL 版本 include 是版本 1 1 我希望使用合理的当前版本 某种版本 3 或 4 我需要做什么才能达到该状态 OpenGL SDK 页面位
  • 使用 SAS EG 通过代理从 API 下载 JSON 文件

    我正在尝试使用瑞士当局提供的 API 对公司网络内的地址进行地理编码 我的公司使用带有用户名和密码的代理服务器 我是 SAS EG 的新手 这是我迄今为止拥有的代码 我必须匿名一些内容才能被允许在此处发布 filename response
  • 学院/大学数据 API [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试构建一个应用程序 允许用户查找特定大学并查看有关该大学的数据 录取率 SAT 分数 规模等 但
  • 用于分享帖子的 Yammers REST API

    我想使用 REST API 从我的业务应用程序共享帖子 不是发布新消息 而是共享现有帖子 有谁知道要使用哪个端点以及如何实现它 当您使用 Yammer API 创建新帖子时 请将参数 shared message id 与要共享的消息的 m
  • useState 由于某种原因没有更新?

    当我尝试使用 axios 从后端 API 获取一些数据 并在由于某种原因获得结果后设置状态时 状态不会更新 当我尝试使用状态时 它只会向我显示一个空数组 但有趣的是当我console log res data 它会毫无问题地向我显示我的列表
  • 在react.js中调用API渲染数组图片

    我有 API 其中包括 pictures http storage web source images 2016 10 28 edac054f88fd16aee7bc144545fea4b2 jpg http storage web sou
  • 如何使用 Twitter Api 在单个请求中获取 20 多个列表成员?

    我想让超过 20 个用户在单个请求中使用 twitter api 有什么参数可以指定吗 我正在使用这个APIhttp api twitter com 1 Barelyme Politics members xml cursor 1 http
  • 我可以查看当前登录的 Twitter 用户吗?

    他们没有通过我的网站进行 OAuth 验证 但在该浏览器上登录到 Twitter 有什么办法让我知道他们的 Twitter 用户名吗 饼干 什么 除非某些东西非常糟糕或者 Twitter 明确提供了用于此目的的 API 否则不会 至少不是通
  • 如何在WCF Rest服务中从流上传图像

    我正在尝试创建 wcf 服务 该服务将上传 pdf doc xls 图像等文件 但 pdf txt 文件正在上传并正确打开 但是当我尝试上传图像文件时 文件正在上传 但是图像不可见 OperationContract WebInvoke M
  • Web Api - 不允许捕获 405 方法

    截至目前 Web api 应用程序针对 405 方法不允许错误返回以下响应正文 我正在尝试更改响应正文 但我不知道如何使用委托处理程序 ApiControllerActionSelector 或过滤器 谁能帮我捕获服务器端的 405 错误
  • 如何在 NodeJS 中允许表单数据

    我最近创建了一个接受文件的 API 我正在尝试使用 Postman 测试 API 如果我使用发出帖子请求x wwww form urlencoded身体类型 一切正常 我得到了所有预期的数据 唯一的问题是它不允许发送文件 如果我使用form
  • Trello API - 未经授权的权限请求

    我正在尝试编写一个小脚本来更新卡的当前列表中的时间量 以便我们可以优化吞吐量 我在 jsfiddle 上写了一个小脚本 几乎可以工作 但我得到了一个 请求未经授权的卡许可 当尝试使用时 Trello post cards card id a
  • Twitter 的推文按钮有回调吗?

    有没有办法在 Twitter 的推文按钮上注册回调 我希望能够跟踪我网站上的哪些特定用户在 Twitter 上发布了链接 我无法添加 onClick 事件 因为它是跨域 iFrame 还有其他想法吗 我见过一种方法 https stacko
  • 如何为 ApplicationController 中 after_action 过滤器中的所有操作渲染 json?

    是否可以在 Rails ApplicationController 中创建一个 after filter 方法 该方法在每个操作上运行并呈现为 JSON 我正在构建一个 API 并且希望将控制器中的每个操作的输出呈现为 JSON 客户控制器
  • 带有 OAuth2 的 YouTube API v3:更新和删除失败并出现“权限不足”错误

    我在尝试着update and delete视频使用YouTube API v3 https developers google com youtube v3 docs videos with OAuth2 用于身份验证 https dev
  • SSDT SQL Server 数据库项目中用于架构比较的命令行/API?

    在 Visual Studio 2012 中 我们有Schema Compare http msdn microsoft com en us library hh272690 28v vs 103 29 aspx in SSDT http
  • 是否有用于绘制图表的Python API(使用线条连接两个列表之间的相应值)[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Given two lists which contain same elements of strin
  • musicbrainz api 获取所有发行组和发行日期

    如何使用 musicbrainz api 在一次调用中获取艺术家的所有发行组和发行日期 我最接近做到这一点的是使用 http musicbrainz org ws 2 release group query arid 494e8d09 f8
  • 如何获取Postgres当前的可用磁盘空间?

    在开始在数据库中进行某些工作之前 我需要确保至少有 1Gb 的可用磁盘空间 我正在寻找这样的东西 select pg get free disk space 是否可以 我在文档中没有找到任何相关内容 PG 9 3 操作系统 Linux Wi

随机推荐

  • 线程异步详细介绍

    线程和异步是计算机科学中比较重要的概念 下面我将详细介绍线程和异步的含义 区别和应用 一 线程的含义和应用 线程可以被认为是进程的一个执行流 线程是指一个程序中单独的执行路径 一个进程可以包含多个线程 它们可以在同一时间内执行不同的任务 从
  • SpringBoot 整合 Elasticsearch (超详细)

    SpringBoot 整合 Elasticsearch 超详细 注意 1 环境搭建 安装es Elasticsearch 6 4 3 下载链接 为了方便 环境使用Windows 配置 解压后配置 找到config目录的elasticsear
  • Linux下常用的优秀软件

    Linux下优秀软件介绍 常用软件 工具软件 美化 图像 视频相关 音频播放器 下载工具 科研利器 终端 Windows下常用软件运行 常用软件 下面的软件均是本人使用过的 如果大家有自己觉得很好的软件 欢迎留言 好的软件应该让大家知道 后
  • 接入微信支付,实现Native下单,附有源码仓库

    接入微信支付 接入指引 获取商户号 微信商户平台 https pay weixin qq com 场景 Native支付 步骤 提交资料 gt 签署协议 gt 获取商户 获取APPID 微信公众平台 https mp weixin qq c
  • 华为服务器设置共享文件,服务器如何设置共享文件夹

    服务器如何设置共享文件夹 内容精选 换一换 云上的备份方式相比线下的方式会更加方便便捷 SAP应用系统备份 推荐使用华为云云硬盘服务 VBS 支持全量 增量备份 同时支持手动和定期自动备份等多种方式 HANA系统备份 推荐使用华为云弹性文件
  • git stash

    git stash git stash 可用来暂存当前正在进行的工作 比如想pull 最新代码 又不想加新commit 或者另外一种情况 为了fix 一个紧急的bug 先stash 使返回到自己上一个commit 改完bug之后再stash
  • vue-列表的渲染

    代码 div div
  • ES6--阮一峰版笔记

    ES6 一 ES6变量声明方法 二 Symbol 三 箭头函数 特点 不适用情景 注意事项 四 Promise Set weakSet Map WeakMap WeakRef Iterator与for of循环 Iterator for o
  • 学习笔记(101):R语言入门基础-axes坐标轴控制

    立即学习 https edu csdn net course play 24913 285845 utm source blogtoedu axes坐标轴控制 axes FALSE表示图形没有坐标轴 默认值为TRUE 表示有坐标轴 x 1
  • Docker安装ELK并实现JSON格式日志分析

    ELK是什么 ELK是elastic公司提供的一套完整的日志收集以及前端展示的解决方案 是三个产品的首字母缩写 分别是ElasticSearch Logstash和Kibana 其中Logstash负责对日志进行处理 如日志的过滤 日志的格
  • 湖北02-2005年第四批院校调档分数线对比表

    院校名称 科类名称 2002年 2003年 2004年 2005年 军事经济学院 理工类 398 399 文史类 409 393 海军工程大学 理工类 441 410 402 文史类 409 通信指挥学院 理工类 420 430 383 3
  • 记一次STM32全国研讨会之旅

    记一次STM32全国研讨会之旅 在上大学的时候 我就一直仰慕稚晖君 一直把他当做我的指路明灯 不料 这明灯太亮了 苦苦追寻 望尘莫及 我记得稚晖君受邀参加过STM32全球峰会 终于今年我也有幸参与了STM32全国研讨会的宣传片的录制 哈哈
  • Python 判断三位水仙花数

    判断水仙花数 介绍 水仙花数是一个三位数 它的每位数字的3次幂之和等于它本身 例如 153 1 3 5 3 3 3 知识点 1 算术运算符 幂 符号 整除 符号 取余 符号 2 if else 条件语句 3 类型转换 4 while 循环
  • STM32标准外设库中USE_STDPERIPH_DRIVER, STM32F10X_MD的含义

    在项目中使用stm32标准外设库 STM32F10x Standard Peripherals Library 的时候 我们会在项目的选项中预定义两个宏定义 USE STDPERIPH DRIVER STM32F10X MD 如下图 这两个
  • 3ds max文件导出osg或者ive格式

    osg osgEarth系列文章目录 文章目录 osg osgEarth系列文章目录 前言 参考 前言 首先下载插件osgexp Osgexp的下载地址 安装上之后 如果3ds max导出里面已经可以选择导出ive或者osg 恭喜你 如果没
  • ChatGPT在教育行业如何应用?

    ChatGPT对教育的影响引发了多轮探讨 在多知网近日举办的OpenTalk第39期 AI 2 0技术在教育领域如何开花 活动上 作为连续创业者 AI创业项目Copi创办人卢晓勇分享了关于AI2 0时代下教育领域的创业机会的思考 核心观点
  • 【多目标跟踪】 TrackFormer 耗时三天 单句翻译!!!

    多目标跟踪 TrackFormer 耗时三天 单句翻译 TrackFormer Multi Object Tracking with Transformers Abstract The challenging task of multi o
  • 小程序商城怎么运营?

    小程序商城是一种新兴的电商模式 它具有低成本 高效率 易于推广等优势 越来越多的企业和个体户商家开始使用小程序商城进行电商运营 那么关于小程序商城怎么运营呢 下面就让我们来看看小程序商城的运营方法吧 如何进行小程序商城的运营 1 确定目标用
  • MES系统实施价值主要在哪四个方面?

    经过多年的建设 MES扩大了使用范围 增强了应用效果 MES覆盖范围从最初的化工行业 扩展至现今的各大制造行业 同时 MES作为智能生产 精细管理的有力抓手 贯穿于企业生产 管理的各个环节与层面 为提高决策效率 节约生产成本 改善流程控制
  • §4 画出你的轨迹——标注轨迹及演示动画

    4 标注轨迹及演示动画 4 1 折线标注 4 1 1 创建一个简单的折线 4 1 2 连接数据库批量创建折线 4 2 轨迹演示动画 4 1 折线标注 4 1 1 创建一个简单的折线 参考百度地图官方文档 var polyline new B