taro中实现带有途径点的路径规划

embedded/2024/12/28 3:37:22/

前言

taro中实现带有途径点的路径规划


javascript">import React, {useState, useEffect} from "react";
import {View, Map, ScrollView} from '@tarojs/components'
import Taro, {useRouter} from '@tarojs/taro';
import request from '../../request';
import api from '../../request/api';
import Header from "../../components/header/main";
import './index.css';
const ViewLine = () => {const router = useRouter().paramsconst [markers, setMarkers] = useState([])const [polyline, setPolyline] = useState([]);const [routeList, setRouteList] = useState([]);const [showRoute, setShowRoute] = useState(true);useEffect(() => {getViewLine()}, [])const getViewLine = async () => {Taro.showLoading({title: "加载中"})let result = await request.post({url: api.xxx,  //接口地址data: {//接口携带参数}});if (result.data.code = 200 && result.data.data && result.data.data.length > 0) {let nowMarkers = []// 处理得到最终markersresult.data.data.map(((item, index) => {let params = {id: index,latitude: item.lat,longitude: item.lng}if (index == 0) {//起点图标信息nowMarkers.push({iconPath: 'xxxx',width: 17,height: 22,...params})} else if (index == result.data.data.length - 1) {//终点图标信息nowMarkers.push({iconPath: 'xxxx',width: 17,height: 22,...params})} else {//途径点图标信息nowMarkers.push({iconPath: require('xxxx'),width: 19,height: 23,...params})}}))let startPoints = nowMarkers[0].longitude + ',' + nowMarkers[0].latitude //起点let endPoints = nowMarkers[nowMarkers.length - 1].longitude + ',' + nowMarkers[nowMarkers.length - 1].latitude //终点let waypoints = '' //途径点nowMarkers.map((item, index) => {if (index != 0 && index != nowMarkers.length - 1) {waypoints += item.longitude + ',' + item.latitude+';'}})waypoints=waypoints.slice(0,waypoints.length-1)//使用高德地图获取polylinevar amapFile = require('../../lib/amap/amap-wx.130');var myAmapFun = new amapFile.AMapWX({key: '你的key'});myAmapFun.getDrivingRoute({origin: startPoints,destination: endPoints,waypoints: waypoints,  // 处理得到最终polyline,规划路线success: function (data) {var points = [];if (data.paths && data.paths[0] && data.paths[0].steps) {var steps = data.paths[0].steps;for (var i = 0; i < steps.length; i++) {var poLen = steps[i].polyline.split(';');for (var j = 0; j < poLen.length; j++) {points.push({longitude: parseFloat(poLen[j].split(',')[0]),latitude: parseFloat(poLen[j].split(',')[1])})}}}const newPolyline = {points: points,color: '#58c16c',width: 6,borderColor: '#2f693c',borderWidth: 1};setPolyline([...polyline, newPolyline])setMarkers(nowMarkers)setRouteList([...result.data.data])},fail: function (info) {console.log(info)}})}Taro.hideLoading()}return (<View className="app-page-box"><Header icon="white">查看线路</Header><View className="app-page-content map-flex"><Map className="mapBox" markers={markers} polyline={polyline} longitude={markers[0] ? markers[0].longitude : 116.397470} latitude={markers[0] ? markers[0].latitude : 39.908823}/></View></View>)
}
export default ViewLine

数据格式:
在这里插入图片描述

在这里插入图片描述


http://www.ppmy.cn/embedded/149347.html

相关文章

Spring Boot 中 Map 的最佳实践

在Spring Boot中使用Map时&#xff0c;请遵循以下最佳实践: 1.避免在Controller中 直接使用Map。应该使用RequestBody 接收-个DTO对象或者 RequestParam接收参数&#xff0c;然后在Service中处 理Map。 2.避免在Service中 直接使用原始的Map。应该使用Autowired 注入-个专门…

elementUI——upload限制图片或者文件只能上传一个——公开版

最近在写后台管理系统时&#xff0c;遇到一个需求&#xff0c;就是上传图片&#xff0c;有且仅能上传一张。 效果图如下&#xff1a; 功能描述&#xff1a;上传图片时&#xff0c;仅支持单选&#xff0c;如果上传图片成功后&#xff0c;展示图片&#xff0c;并隐藏添加图片的…

Linux shell脚本用于常见图片png、jpg、jpeg、webp、tiff格式批量转PDF文件

Linux Debian12基于ImageMagick图像处理工具编写shell脚本用于常见图片png、jpg、jpeg、webp、tiff格式批量转PDF文件&#xff0c;”多个图片分开生成多个PDF文件“或者“多个图片合并生成一个PDF文件” BiliBili视频链接&#xff1a; Linux shell脚本对常见图片格式批量转换…

Qt笔记:网络编程UDP

一、铺垫 1.Qt框架使用的网络结构的基础就是Linux学习的网络编程基础&#xff1b;所以使用Qt写客户端&#xff0c;使用Linux写服务端&#xff1b;两者是可以实现互联的 二、UDP 网络编程UDP使用套路&#xff1a; 1.首先在.pro文件中加上network&#xff0c;使Qt可以搭载网络…

将 ASP.NET Core 应用程序的日志保存到 D 盘的文件中 (如 Serilog)

将 ASP.NET Core 应用程序的日志保存到 D 盘的文件中&#xff0c;可以使用第三方日志库&#xff08;如 Serilog&#xff09;来实现。Serilog 是一个流行的日志库&#xff0c;支持将日志输出到文件、控制台、数据库等多种目标。 以下是实现步骤&#xff1a; 1. 安装 Serilog 相…

构建一个rust生产应用读书笔记7-Mock编码浪子

编写单元测试是确保代码质量、稳定性和可维护性的关键步骤&#xff0c;尤其是在采用测试驱动开发&#xff08;TDD&#xff09;方法时。对于 EmailClient 组件的测试&#xff0c;我们确实应该从小处着手&#xff0c;先保证组件本身的功能正确无误&#xff0c;然后再逐步集成到更…

【CSS in Depth 2 精译_094】16.2:CSS 变换在动效中的应用(下)——导航菜单的文本标签“飞入”特效与交错渲染效果的实现

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第五部分 添加动效 ✔️【第 16 章 变换】 ✔️ 16.1 旋转、平移、缩放与倾斜 16.1.1 变换原点的更改16.1.2 多重变换的设置16.1.3 单个变换属性的设置 16.2 变换在动效中的应用 16.2.1 放大图标&am…

MySQL从入门到入土---MySQL表的约束 (内含实践)---详细版

目录 引入&#xff1a; null 与not null default&#xff1a; comment列描述 &#xff1a; not null 和 default&#xff1a; zerofill &#xff1a; 主键&#xff1a;primary key 复合主键&#xff1a; 自增长:auto_increment 唯一键&#xff1a;unique key 外键&a…