地图上绘制地铁线路

需求背景

不管是之前的pms 地铁还是location都会有需求涉及到地图上绘制地铁线路,来查看当前位置是否靠近地铁口,常规的交互可以看下高德地图,如图所示:

image-20240619172124702

需求分析

不管是高德地图还是百度地图都提供了简易版的地铁线路图,比如https://map.amap.com/subway/index.html,也提供了JS APIhttps://lbs.amap.com/api/subway-api/subway-summary/。

缺点是只有单独的地铁图,没有跟地图整合到一起,没有具体位置的概念

基于以上原因需要自己绘制地铁线

思路整理

  1. 首先要获取地铁线的经纬度,通过 AMap.LineSearch 初始化,AMap.LineSearch 定义获取某个城市交通信息,AMap.LineSearch.search 关键词搜索线路内容,理论上获取第一个就可以
  2. 获取站点经纬度,通过公司数据库输出经纬度
  3. 通过AMap.Polyline绘制地铁线,通过AMap.Marker绘制站点标记

核心代码

// 绘制路线
map.plugin('AMap.LineSearch', () => {var linesearch = new window.AMap.LineSearch({pageIndex: 1, // 第一页的线路city: '杭州',pageSize: 100, // 每一页的线路条数extensions: 'all' // 所有线路类型});console.log(`linesearch = `, linesearch);// 开始搜索var name = '地铁5号线';linesearch.search(name, (status, result) => {console.log(`status, result = `, status, result);if (status === 'complete' && result.info === 'OK') {// 查询成功调用lineSearch_Callback(result);} else {console.log('查询出错');}});/* 地铁路线查询服务返回数据解析概况 */function lineSearch_Callback (data) {var lineArr = data.lineInfo;var lineNum = data.lineInfo.length;if (lineNum === 0) {console.log(lineNum);} else {for (var i = 0; i < lineNum; i++) {var pathArr = lineArr[i].path;if (i === 0) { // 只绘制一条线路,就是需要高亮的地铁线路drawbusLine(pathArr);}}}}/* 绘制路线 */function drawbusLine(BusArr) {new window.AMap.Polyline({map: map,path: BusArr,strokeColor: '#000', // 线颜色strokeOpacity: 1, // 线透明度isOutline: true,outlineColor: 'white',strokeWeight: 10 // 线宽});}});
// 绘制站点
const subway5 = [{ name: '博奥路', lng: '120.244164', lat: '30.182338' },{ name: '姑娘桥', lng: '120.330526', lat: '30.175919' },{ name: '三坝', lng: '120.097778', lat: '30.300714' },{ name: '江晖路', lng: '120.212417', lat: '30.181579' },{ name: '滨康路', lng: '120.231003', lat: '30.183864' },{ name: '打铁关', lng: '120.176739', lat: '30.285425' },{ name: '杭师大仓前', lng: '120.01721', lat: '30.288592' },{ name: '南星桥', lng: '120.177384', lat: '30.217295' },{ name: '萍水街', lng: '120.112745', lat: '30.302806' },{ name: '和睦', lng: '120.119367', lat: '30.308544' },{ name: '五常', lng: '120.045156', lat: '30.296292' },{ name: '建国北路', lng: '120.181413', lat: '30.264496' },{ name: '大运河', lng: '120.131684', lat: '30.319283' },{ name: '良睦路', lng: '120.007201', lat: '30.285632' },{ name: '拱宸桥东', lng: '120.147679', lat: '30.317058' },{ name: '创景路', lng: '119.998033', lat: '30.278112' },{ name: '通惠中路', lng: '120.285183', lat: '30.180485' },{ name: '聚才路', lng: '120.198803', lat: '30.182426' },{ name: '金星', lng: '119.966536', lat: '30.265041' },{ name: '双桥', lng: '120.308770', lat: '30.173139' },{ name: '长河', lng: '120.194533', lat: '30.197087' },{ name: '绿汀路', lng: '119.992062', lat: '30.260140' },{ name: '葛巷', lng: '119.998820', lat: '30.270354' },{ name: '善贤', lng: '120.160651', lat: '30.317478' },{ name: '人民广场', lng: '120.266831', lat: '30.179593' },{ name: '金鸡路', lng: '120.253402', lat: '30.181697' },{ name: '浙大紫金港', lng: '120.077192', lat: '30.294129' },{ name: '杭氧', lng: '120.178944', lat: '30.294335' },{ name: '宝善桥', lng: '120.179847', lat: '30.271957' },{ name: '蒋村', lng: '120.068483', lat: '30.294809' },{ name: '江城路', lng: '120.178205', lat: '30.238561' },{ name: '永福', lng: '120.027057', lat: '30.291577' },{ name: '育才北路', lng: '120.277897', lat: '30.180823' },{ name: '东新园', lng: '120.175787', lat: '30.308268' },{ name: '火车南站', lng: '120.297331', lat: '30.172670' },{ name: '万安桥', lng: '120.180595', lat: '30.254052' },{ name: '城站', lng: '120.180770', lat: '30.244567' },{ name: '西文街', lng: '120.169932', lat: '30.316037' },{ name: '候潮门', lng: '120.173019', lat: '30.226616' }
];const markers: any = [];
subway5.map((item: any) => {markers.push(new window.AMap.Marker({position: new window.AMap.LngLat(item.lng, item.lat),icon: '//webapi.amap.com/theme/v1.3/markers/b/mark_bs.png',anchor: 'bottom-center',}));
});
map.add(markers);

效果展示

image-20240619174332551

功能扩展

可以绘制不同颜色线路串联站点,相当于把简易版的地铁线路图覆盖在地图上。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】类和对象(三)构造与析构

文章目录 一、类的6个默认成员函数二、 构造函数干嘛的&#xff1f;语法定义特性综上总结什么是默认构造函数&#xff1f; 三、析构函数干嘛的 &#xff1f;语法定义析构顺序 一、类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。空类中并不是真的什么…

it职业生涯规划系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;职业介绍管理&#xff0c;答题管理&#xff0c;试题管理&#xff0c;基础数据管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;在线答题&#xff0…

RealityCheck™电机监测和预测性维护模型

RealityCheck™电机 一个附加的软件工具箱&#xff0c;可实现条件监测和预测性维护功能&#xff0c;而无需依赖额外的传感器。相反&#xff0c;它使用来自电机控制过程的电子信息作为振动和其他传感器的代理。凭借其先进的信号处理和机器学习(ML)模型&#xff0c;RealityCheck …

为什么要学Java?

想要自己教会自己java&#xff0c;从小白成长到架构师。实现硬实力就业&#xff01; 因为Java是全球排名第一的编程语言&#xff0c;Java工程师也是市场需求最大的软件工程师&#xff0c;选择Java&#xff0c;就是选择了高薪。 为什么Java应用最广泛&#xff1f; 从互联网到…

【VMware】VMware虚拟机安装_配置_使用教程

一、准备工作 1、下载VMware软件&#xff1a;访问VMware官方网站&#xff0c;下载适合你操作系统的VMware Workstation Pro安装包。 下载地址&#xff1a;VMware Desktop Hypervisors for Windows, Linux, and Mac 2、准备操作系统镜像文件&#xff1a;根据你想要在虚拟机中安…

全志 Android 11:实现响应全局按键

一、篇头 最近实现热键想功能&#xff0c;简单总结了下全志平台Android 11 的响应全局热键的方法。 二、需求 实现全局热键&#xff0c;响应F-、AF、F三个按键&#xff0c;AF只用于启动调焦界面&#xff0c;F-和F除了可以启动调焦界面外&#xff0c;还用于调整镜头的焦距&…

Spring Boot集成antlr实现词法和语法分析

1.什么是antlr&#xff1f; Antlr4 是一款强大的语法生成器工具&#xff0c;可用于读取、处理、执行和翻译结构化的文本或二进制文件。基本上是当前 Java 语言中使用最为广泛的语法生成器工具。Twitter搜索使用ANTLR进行语法分析&#xff0c;每天处理超过20亿次查询&#xff1…

离线安装zabbix-agent,自制yum源方式安装

文章目录 1&#xff0c;机器准备大致思路 2&#xff0c;在机器A上操作2.1 执行完后会在/etc/yum.repos.d/下面自动生成yum文件&#xff08;zabbix.repo&#xff09;2.2 将官方源改为国内源2.3 修改zabbix.repo文件的[zabbix-frontend]的参数项2.4 清除缓存即可2.5 下载所需zabb…

Semantic Kernel 直接调用本地大模型与阿里云灵积 DashScope

本文主要介绍如何在无需网关&#xff0c;无需配置 HttpClient 的情况下&#xff0c;使用 Semantic Kernel 直接调用本地大模型与阿里云灵积 DashScope 等 OpenAI 接口兼容的大模型服务。 1. 背景 一直以来&#xff0c;我们都在探索如何更好地利用大型语言模型&#xff08;LLM&…

AI 已经在污染互联网了。。赛博喂屎成为现实

大家好&#xff0c;我是程序员鱼皮。这两年 AI 发展势头迅猛&#xff0c;更好的性能、更低的成本、更优的效果&#xff0c;让 AI 这一曾经高高在上的技术也走入大众的视野&#xff0c;能够被我们大多数普通人轻松使用&#xff0c;无需理解复杂的技术和原理。 其中&#xff0c;…

2024: 有效使用OKR的10个技巧

2023年是许多前所未有的一年。从真正意义上讲&#xff0c;这一年让我们为不可预测的事情做好了准备&#xff0c;也为不确定的事情提供了训练。在我们身边发生了这么多事情&#xff0c;而下一步的行动却依然不甚明朗的情况下&#xff0c;领导者们更应该开始制定战略&#xff0c;…

wvp-GB28181-pro 源码分析-查询设备信息和通道流程(二)

文章目录 一、SIP通信方法介绍1.1 核心方法(Core Methods)1.2 扩展方法(Extension Methods)二、源码分析2.1 SIP协议处理过程2.2 查询设备信息的sip过程(CmdType=DeviceInfo)2.2.1 摄像机注册成功后,wvp会发命令查询设备信息2.2.2 查询信令发出2.2.3 处理设备查询返回的XML2…

还在为Android开发找不到图片测试资源发愁吗? DummyImage来助你加速开发

使用 DummyImage 模拟电影应用数据 在开发和测试过程中&#xff0c;模拟数据是不可或缺的工具。它可以帮助我们在没有真实数据的情况下测试应用程序的功能和性能。本文将介绍如何使用 [DummyImage]https://dummyimage.com生成占位符图像来模拟电影应用的数据&#xff0c;并深入…

蓝牙技术|蓝牙耳机将成钥匙,佩戴时靠近设备即解锁

微软公司于今年 6 月 13 日获批一项技术专利&#xff0c;探索耳机验证技术&#xff0c;未来用户不仅可以拿耳机来听歌、通话&#xff0c;而且可以变身钥匙&#xff0c;配合其它计算设备进行身份验证。 微软在专利中概述称用户佩戴这款耳机之后&#xff0c;可以发出超声波信号…

国产数据库也开始堆砌功能了?试图在行业中炫技!

作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复&#xff0c; 安装迁移&#xff0c;性能优化、故障…

每日一练:攻防世界:ewm

这道题我尝试了使用montagegaps解题&#xff0c;但是没有解出来&#xff0c;图片数量不是很多&#xff0c;可以尝试用PS直接拼图&#xff0c;但是这样学不到东西&#xff0c;我也就没尝试&#xff0c;直接看的官方WP 这段代码应该是改变工作目录到small&#xff0c;并且变量当…

【DevOps】Nginx配置文件详解与实战部署PHP站点

目录 引言 Nginx配置文件概述 基本结构 关键指令 Nginx配置文件实战 全局指令配置 HTTP指令配置 服务器指令配置 位置指令配置 实战部署PHP站点 步骤1&#xff1a;安装Nginx和PHP 步骤2&#xff1a;创建网站目录和文件 步骤3&#xff1a;配置Nginx服务器块 步骤4…

家具市场规模超7660亿美元,赛盈分销这些卧室家具在海外大卖!

今年&#xff0c;全球家具市场似乎表现都十分乐观。 根据海关出口总署的相关数据&#xff0c;我国的家具出口额1-5月份达到了2121.5亿元&#xff0c;同比增长20.5%。国内家具出口增速显著&#xff0c;换句话说&#xff0c;就是老外对家具又有更多的消费能力了。 在Statista的…

阿里云PAI大模型评测最佳实践

作者&#xff1a;施晨、之用、南茵、求伯、一耘、临在 背景信息 内容简介 在大模型时代&#xff0c;随着模型效果的显著提升&#xff0c;模型评测的重要性日益凸显。科学、高效的模型评测&#xff0c;不仅能帮助开发者有效地衡量和对比不同模型的性能&#xff0c;更能指导他…

深入浅出Git原理与Gitflow流程

1 Git原理 版本控制系统在软件开发和团队协作中扮演着至关重要的角色。它们帮助开发人员跟踪和管理代码的变化&#xff0c;协调多人同时编辑同一代码库&#xff0c;回溯历史版本&#xff0c;并解决代码冲突等问题。Git作为当今最流行的分布式版本控制系统&#xff0c;为开发人…