规划路线(微信小程序、H5)

这篇具有很好参考价值的文章主要介绍了规划路线(微信小程序、H5)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

规划路线(微信小程序、H5),微信小程序,notepad++,小程序文章来源地址https://www.toymoban.com/news/detail-637842.html

//地图
		getLocationDian(e1, e2) {
			console.log(e1, e2);
			let self = this;
			self.xx1 = [];
			self.xx2 = [];
			self.points = [];
			// self.markers=[]
			console.log(self.markers, '======>marks');

			// self.$jsonp(url, data).then(re => {
			// 	var coors = re.result.routes[0].polyline;
			// 	for (var i = 2; i < coors.length; i++) {
			// 		coors[i] = coors[i - 2] + coors[i] / 1000000;
			// 	}
			// 	coors.forEach((item, index) => {
			// 		if (index % 2 == 0) {
			// 			self.xx2.push(item);
			// 		} else {
			// 			self.xx1.push(item);
			// 		}
			// });

			// 	self.xx1.forEach((item, index) => {
			// 		self.points.push({
			// 			longitude: item,
			// 			latitude: self.xx2[index]
			// 		});
			// 	});
			// 	self.setDateByPoints(self.points);
			// });
			wx.request({
				url: 'https://apis.map.qq.com/ws/direction/v1/ebicycling', //仅为示例,并非真实接口地址。
				data: {
					from: e1,
					to: e2,
					key: '3MSBZ-*********-C2UL7-PGYA3-2TFCU'
				},
				header: {
					'content-type': 'application/json' // 默认值
				},
				success: res => {
					console.log(res, 'cccccccc');
					self.xx1 = [];
					self.xx2 = [];
					self.points = [];
					// console.log(res.data.result.routes[0].polyline,909090);
					var coors = res.data.result.routes[0].polyline;
					for (var i = 2; i < coors.length; i++) {
						coors[i] = coors[i - 2] + coors[i] / 1000000;
					}
					// console.log(coors,'coors==================')
					coors.forEach((item, index) => {
						if (index % 2 == 0) {
							self.xx2.push(item);
						} else {
							self.xx1.push(item);
						}
					});
					self.xx1.forEach((item, index) => {
						self.points.push({
							longitude: item,
							latitude: self.xx2[index]
						});
					});
					self.setDateByPoints(self.points);
				}
			});
		},
		setDateByPoints(points) {
			console.log('setDateByPoints', points);
			let that = this;
			let color = '#ffd500';
			that.polyline = that.computePointsSpeed(points);
			console.log(that.polyline, '数据');
			if (!that.polyline.length) {
				that.polyline = [
					{
						points: points,
						color: color,
						arrowLine: true, //带箭头的线
						width: 8
					}
				];
			}
			// if (that.maxSpeed) {
			// 	that.maxSpeed.iconPath = '../../static/icon/address_icon.png';
			// 	that.maxSpeed.width = 24;
			// 	that.maxSpeed.height = 24;
			// 	that.maxSpeed.id = 2;
			// 	that.maxSpeed.callout = {
			// 		color: '#5d5d5d',
			// 		fontSize: 14,
			// 		borderRadius: 6,
			// 		padding: 8,
			// 		bgColor: '#fff',
			// 		content: `极速 ${this.covertSpeed(this.maxSpeed.speed)} km/h`
			// 	};
			// }
			let start = points[0];
			let end = points[points.length - 1];
			start.id = 1;
			start.width = 35;
			start.height = 35;
			start.iconPath = '../../static/icon/address_icon.png';
			end.id = 3;
			end.width = 35;
			end.height = 35;
			end.iconPath = '../../static/icon/address_icon.png';
			console.log(start, '======>箭头');

			that.markers.push(start, end);
			this.setCenterPoint(start, end);
		},
		// 根据速度计算路线颜色
		computePointsSpeed(points) {
			let lineColor = '#0080FF';
			let list = [];
			if (!points || !points.length) {
				return list;
			}
			let lastArr = [];
			let lastSpeed = 0;
			for (let i = 0; i < points.length; i++) {
				let speed = this.covertSpeed(points[i].speed);
				if (!this.maxSpeed) {
					this.maxSpeed = points[i];
				} else {
					if (points[i].speed > this.maxSpeed.speed) {
						this.maxSpeed = points[i];
					}
				}
				if (i === points.length - 1 || !speed) {
					// 还剩最后一个不计入
					continue;
				}
				let nextPoint = points[i + 1];
				let nextSpeed = this.covertSpeed(points[i + 1].speed);
				if (!nextSpeed) {
					continue;
				}
				lastSpeed = speed;
				if (!lastArr.length) {
					lastArr.push(points[i], nextPoint);
				} else {
					lastArr.push(nextPoint);
				}
			}
			this.centerPoint = points[Math.round(points.length / 2)];
			// console.log("centerPoint", this.centerPoint)
			if (!list.length && lastArr.length) {
				list.push({
					points: lastArr,
					color: lineColor,
					arrowLine: true, //带箭头的线
					width: 8
				});
			}
			return list;
		},
		// 地图中心点 (计算3个点的中心点)
		setCenterPoint(start, end) {
			this.longitude = (start.longitude + this.centerPoint.longitude + end.longitude) / 3;
			this.latitude = (start.latitude + this.centerPoint.latitude + end.latitude) / 3;
			let distance1 = this.getDistance(start.latitude, start.longitude, this.centerPoint.latitude, this.centerPoint.longitude);
			let distance2 = this.getDistance(this.centerPoint.latitude, this.centerPoint.longitude, end.latitude, end.longitude);
			const distance = Number(distance1) + Number(distance2);
			console.log('计算两点之间的距离', distance1, distance2, distance);
			if (distance < 200) {
				this.scale = 17;
			}
			if (distance >= 200 && distance < 1000) {
				this.scale = 15;
			}
			if (distance >= 1000 && distance < 5000) {
				this.scale = 13;
			}
			if (distance >= 5000 && distance < 10000) {
				this.scale = 12;
			}
			if (distance >= 10000 && distance < 15000) {
				this.scale = 11;
			}
			if (distance >= 15000 && distance < 50000) {
				this.scale = 10;
			}
			if (distance >= 50000 && distance < 200000) {
				this.scale = 8;
			}
			if (distance > 200000) {
				this.scale = 5;
			}
		},
		// 速度转换 m/s -> km/h
		covertSpeed(ms) {
			if (ms <= 0) {
				return 0.0;
			}
			const kmh = ms * (60 * 60);
			return parseFloat(String(kmh / 1000)).toFixed(2);
		},
		// 计算两坐标点之间的距离
		getDistance: function(lat1, lng1, lat2, lng2) {
			let rad1 = (lat1 * Math.PI) / 180.0;
			let rad2 = (lat2 * Math.PI) / 180.0;
			let a = rad1 - rad2;
			let b = (lng1 * Math.PI) / 180.0 - (lng2 * Math.PI) / 180.0;
			let r = 6378137;
			return (r * 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(rad1) * Math.cos(rad2) * Math.pow(Math.sin(b / 2), 2)))).toFixed(0);
		},
<map id="map1" :longitude="longitude" :latitude="latitude" :markers="markers" :scale="scale" :polyline="polyline"></map>
markers: [
				{
					id: 1,
					latitude: 30.338206,
					longitude: 120.222305,
					iconPath: '../../static/icon/address_icon.png',
					width: '40',
					height: '40'
				},
				{
					id: 2,
					latitude: 30.348206,
					longitude: 120.222305,
					iconPath: '../../static/icon/address_icon.png',
					width: '40',
					height: '40'
				}
			], // 标记点集合
			latitude: '30.338206',
			longitude: '120.222305',
			scale: 12, // 地图缩放比例
			points: [],
			xx1: [],
			xx2: [],
			polyline: [
				{
					points: []
				}
			] //

到了这里,关于规划路线(微信小程序、H5)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序之地图选地、城市选择、地铁图、路线规划

    腾讯位置服务为微信小程序提供了基础的 标点能力、线和圆的绘制接口 等地图组件和 位置展示、地图选点 等地图API位置服务能力支持,使得开发者可以自由地实现自己的微信小程序产品。 在此基础上,腾讯位置服务微信小程序 JavaScript SDK是专为小程序开发者提供的LBS数据

    2024年02月08日
    浏览(37)
  • 微信小程序嵌套H5页面,调用微信小程序扫码功能,并将结果传回H5页面

    实现方式: 小程序嵌套h5页面,点击h5页面的扫码按钮跳转到小程序的扫码页面,进入之后会立即扫码,拿到扫码结果后,跳转到小程序定义好的webview页面,再由webview页面进入h5页面。 缺点:为了唤起扫码,会进入一个空白的扫码页面 1、小程序嵌套h5页面方法 在小程序中,创

    2024年02月12日
    浏览(50)
  • 微信小程序webview(H5页面)调用微信小程序支付

    1.业务描述:微信小程序商城入口进入的页面是商城H5页面,在H5页面进行微信支付如何实现; 2.微信小程序(webview访问H5页面)必须使用微信小程序支付; 如何实现以及实现方式以及支付后页面返回功能: 商品详情(h5页面)--商品确认页(h5页面)--收银台(h5页面)(点击调

    2024年02月11日
    浏览(60)
  • 微信小程序---- 外卖小程序查看实时地图路线(骑手端&用户端)【高德地图】

    前言:1. 在小程序中需要使用map组件,文档链接:https://developers.weixin.qq.com/miniprogram/dev/component/map.html 2.使用的是高德地图,所以需要引进相关的js,下载链接:https://lbs.amap.com/api/wx/download 3.去往高德官方申请需要用的key,操作链接:https://lbs.amap.com/api/wx/guide/create-project/get-key

    2024年02月16日
    浏览(56)
  • APP跳转H5、微信小程序与微信小程序之间互跳

    plus.share.getServices(function(res) { var sweixin = null; for (var i = 0; i res.length; i++) { var t = res[i]; if (t.id == ‘weixin’) { sweixin = t; } } if (sweixin) { sweixin.launchMiniProgram({ id: item.id, //小程序原始id type: item.type, //环境 0-正式版; 1-测试版; 2-体验版 path: path //指定页的路径,如需传参直接字符串

    2024年02月08日
    浏览(53)
  • 微信H5页面实现微信小程序支付

    背景: 在微信H5页面已经实现了微信JSAPI的网页支付,老板要求把整个业务线快速转移到微信小程序中,作为懒惰的程序员来说,直接把页面嵌套到小程序不就行了。说干就干,在小程序中设置好基本信息后,一预览居然成功了,一切看来是那么顺利,可到了系统的支付环节

    2024年02月14日
    浏览(50)
  • 微信小程序内嵌H5网页

    1.登录微信公众平台,选择对应的小程序进入(个人类型的小程序暂不支持使用) 2.在小程序后台左侧菜单选择“开发”–“开发管理”–“开发设置”–“业务域名”–“添加”–扫码进入,点击“下载检验文件”下载到电脑本地,提供给小程序开发运营者进行配置,将文

    2024年02月11日
    浏览(59)
  • 微信小程序和微信H5有什么区别?

    前言:进入公司会发现会从最常见的PC端开发,慢慢将重心转移到H5开发,再到小程序开发,后面随着公司业务的发展还需要开发APP,也就是Android。也有可能顺序不一样,作为一个合格的后端甚至全栈,这些还是要会的。 在开发微信小程序功能的时候,发现微信小程序和微信

    2024年02月11日
    浏览(53)
  • 企业微信(H5打开)调用微信小程序

    这个功能比较坑,有很多坑的点,我先把我的开发过程说一下,最后把我遇到的问题总结. 1.需要在微信小程序的管理后台中关联企业微信 2.在企业微信管理后台中设置应用主页 3.在企业微信管理后台中设置可信域名信息(可调用JS-SDK、跳转小程序的可信域名一定要配置,你上面的

    2023年04月19日
    浏览(34)
  • 前端实现微信支付(H5,微信小程序)

    通常一些电商项目使用到微信支付操作,所以简单地介绍一下微信支付的具体流程。 微信支付是微信内置微信浏览器(其他浏览器不支持)或者微信小程序的支付接口,主要负责用户对商家执行支付操作的流程。 例如常见的电商在下单环节,就需要通过使用微信支付接口,

    2024年02月08日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包