【uniapp】Google Maps

news2024/11/18 1:26:50

话不多说 直接上干货 提前申请谷歌地图账号
一、新建地图 使用h5+获取当前定位或者使用三方uniapp插件

 	var coords = ""
    navigator.geolocation.getCurrentPosition(function(position) {
			coords = {
				lat: position.coords.latitude,
				lng: position.coords.longitude
			};
			lats = position.coords.latitude;
			lngs = position.coords.longitude
		});
map = new google.maps.Map(document.getElementById('map'), {
		zoom: zoom,
		center: coords,
		mapId: "your map id",
		animation: 'BOUNCE'
	});

二、画圆

cityCircle = new google.maps.Circle({
	strokeColor: "#FF0000", // 边框颜色
	strokeOpacity: 0.6, // 边框透明度
	strokeWeight: 0.8, // 边框宽度
	fillColor: "#FF0000", // 填充颜色
	fillOpacity: 0.15, // 填充透明度
	map,
	center: {
		lat: lats,
		lng: lngs
	},
	radius: maxValue * 500, //半径
});

三、绘制marker点

  let min = 500;
	let max = 1000;
	let randomNum = Math.floor(Math.random() * (max - min + 1)) + min;
	for (let i = 0; i < 5; i++) {
		var locObj = {
			lat: (lats + (Math.floor(Math.random() * 21) - 15) / randomNum) * 1,
			lng: (lngs - (Math.floor(Math.random() * 21) - 15) / randomNum) * 1,
			title: randomChinese(10)
		}
		const marker = new google.maps.Marker({
			position: locObj,
			title: locObj.title + '-' + i,
			imgUrl: 'https://picsum.photos/450/450?random=' + Math.floor(Math.random() * 100),
			icon: {
				url: "https://maps.gstatic.com/mapfiles/ms2/micons/blue.png",
				scaledSize: new google.maps.Size(50, 50),
			},
			map: map
		});
		markers.push(marker)
	}

四、搜索框

// 创建 Autocomplete 实例
	const input = document.getElementById("search-box");
	const autocomplete = new google.maps.places.Autocomplete(input);
	// 设置 Autocomplete 参数
	autocomplete.setFields(["geometry", "name"]);
	// 添加事件监听器,当用户选择某个地点时,在地图上标记出所选位置
	autocomplete.addListener("place_changed", function() {
		const place = autocomplete.getPlace();
		if (!place.geometry) {
			console.log("返回的地理信息无效!");
			return;
		}
		// 将地图中心点指向用户所选位置,并设置标记
		if (searchmarker) { //去除marker标记点
			searchmarker.setMap(null)
			searchmarker = ""
		}
		map.setCenter(place.geometry.location);
		searchmarker = new google.maps.Marker({
			map: map,
			position: place.geometry.location,
			title: place.name,
		});
	});

五、绘制省市区

const polygonsData = []
	//cityObjArr 请前往dcloud获取相关数据【https://ext.dcloud.net.cn/plugin?id=11873】
	for (var k = 0; k < cityObjArr.length; k++) {
			var obj = {
				polygonCoords: cityObjArr[k],
				color: getRandomColor(),
				strokeWeight: 2,
			}
			polygonsData.push(obj)
		}
	polygonsData.forEach((polygon) => {
		var polygonObj = new google.maps.Polygon({
			paths: polygon.polygonCoords,
			strokeColor: getRandomColor(), // 边界线颜色
			strokeOpacity: 0.8, // 边界线透明度
			strokeWeight: 2, // 边界线厚度
			fillColor: getRandomColor(), // 填充颜色
			fillOpacity: 0.2, // 填充透明度
			map: map,
		});
		newPolygon.push(polygonObj)
	});

六、画路线

const directionsService = new google.maps.DirectionsService();
	var TravelMode = [{
			id: 1,
			name: "DRIVING",
			color: "#ea4335"
		},
		{
			id: 2,
			name: "WALKING",
			color: "#7825fa"
		},
		{
			id: 3,
			name: "BICYCLING",
			color: "#fa6200"
		},
		{
			id: 4,
			name: "TRANSIT",
			color: "#ff00ff"
		}
	]
	for (var i = 0; i < TravelMode.length; i++) {
		startDrawRoute(directionsService, TravelMode[i])
	}
	function startDrawRoute(directionsService, travelMode) {
	// 随机数字而已  动态数字  方便查询效果
	let min = 5000;
	let max = 10000;
	let randomNum = (Math.floor(Math.random() * (max - min + 1)) + min) / 500000;
	// 起点坐标
	const origin = {
		lat: 34.7382820208 + randomNum,
		lng: 113.64360881345 + randomNum
	};
	// 终点坐标
	const destination = {
		lat: 34.78194 + randomNum,
		lng: 113.622512 + randomNum
	};
	var directionsRenderer = new google.maps.DirectionsRenderer({
		map: map,
		suppressMarkers: true, // 关闭默认图标
		polylineOptions: {
			strokeColor: travelMode.color, //设置路线颜色
			strokeWeight: 5 //设置路线宽度
		},
		// draggable: true //允许用户拖动路线
	});
	const request = {
		origin: origin,
		destination: destination,
		travelMode: travelMode.name, //绘制路线的模式
	};
	directionsService.route(request,
		(result, status) => {
			if (status === "OK") {
				directionsRenderer.setDirections(result);
				directionsRenderer.setMap(map);
				// 获取起点和终点的信息并添加标记
				var startMarker = new google.maps.Marker({
					position: result.routes[0].legs[0].start_location,
					map: map,
					icon: {
						url: "https://maps.gstatic.com/mapfiles/ms2/micons/pink.png",
						scaledSize: new google.maps.Size(50, 50),
					},
				});
				drawRouteMarker.push(startMarker)
				var endMarker = new google.maps.Marker({
					position: result.routes[0].legs[0].end_location,
					map: map,
					icon: {
						url: "https://maps.gstatic.com/mapfiles/ms2/micons/orange.png",
						scaledSize: new google.maps.Size(50, 50),
					},
				});
				drawRouteMarker.push(endMarker)
				directionsRendererArr.push(directionsRenderer)
				//显示路线的总距离
				console.log('距离===', directionsRenderer.directions.routes[0].legs[0].distance.text)
				console.log('时间===', directionsRenderer.directions.routes[0].legs[0].duration.text)
				// for (var k = 0; k < directionsRenderer.directions.routes[0].legs[0].steps.length; k++) {
				// 	console.log(directionsRenderer.directions.routes[0].legs[0].steps[k].instructions)
				// }
			} else {
				// console.log(travelMode, "绘制失败===", result)
			}
		}
	);
}

这个时候相信你已经看到了地图【详细代码请前往dcloud插件市场查看marker标记点、省市区颜色标记、输入框搜索、范围选择、信息弹窗等】

祝:学习愉快、工作顺利

温馨提示:源码获取方式 关注【码农园区】 回复   “ google”   

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows安装wsl2以及ubuntu

查看自己系统的版本 必须运行 Windows 10 版本 2004 及更高版本&#xff08;内部版本 19041 及更高版本&#xff09;或 Windows 11 才能使用以下命令 在设置&#xff0c;系统里面就能看到 开启windows功能 直接winQ搜 开启hyber-V、使用于Linux的Windows子系统、虚拟机平…

让资产权利归于建设者:Kiosk使过程变得更简单

区块链凭借着其将人的权利地位置于平台之上的能力&#xff0c;可以重塑互联网&#xff0c;而自托管为个人提供了控制和管理其资产和数据的能力。链上交易支持建设者和客户之间的点对点交易。这些特质联合起来&#xff0c;可以将数字世界从基于价值提取的模式转变为基于价值创造…

机器学习第7天:逻辑回归

文章目录 介绍 概率计算 逻辑回归的损失函数 单个实例的成本函数 整个训练集的成本函数 鸢尾花数据集上的逻辑回归 Softmax回归 Softmax回归数学公式 Softmax回归损失函数 调用代码 参数说明 结语 介绍 作用&#xff1a;使用回归算法进行分类任务 思想&#xff1a;…

MATLAB 模型预测控制(MPC)控制入门 —— 设计并仿真 MPC 控制器

系列文章目录 文章目录 系列文章目录前言一、使用 MPC Designer 设计控制器1.1 CSTR 模型1.2 导入被控对象并定义 MPC 结构1.3 定义输入和输出通道属性1.4 配置仿真场景1.5 配置控制器水平线1.6 定义输入约束条件1.7 指定控制器调整权重1.8 消除输出超调1.9 测试控制器抗干扰能…

15项基本SCADA技术技能

1. 人机界面 人机界面是将操作员连接到设备、系统或机器的仪表板或用户界面。 以下是 hmi 在 scada 技术人员简历中的使用方式&#xff1a; 完成了查尔斯湖废水处理厂和提升站的完整 HMI 图形界面。对加油系统、加油车、PLC、HMI、触摸屏进行故障排除和维修。对 Horner HMI …

吴恩达《机器学习》8-7:多元分类

在机器学习领域&#xff0c;经常会遇到不止两个类别的分类问题。这时&#xff0c;需要使用多类分类技术。本文将深入探讨多类分类&#xff0c;并结合学习内容中的示例&#xff0c;了解神经网络在解决这类问题时的应用。 一、理解多类分类 多类分类问题是指当目标有多个类别时…

homeassiant主题

下载主题 https://github.com/maartenpaauw/home-assistant-community-themes.git 使用file editor到homeassiant路径下&#xff0c;新建文件夹themes文件夹&#xff0c;用terminal新建也可以。 使用file editor上传文件 使用Terminal解压 mkdir themes unzip home-assistan…

达芬奇DaVinci Resolve Studio 18.6.3 for Mac

DaVinci Resolve Studio 18是一款专业的视频编辑和调色软件&#xff0c;适用于电影、电视节目、广告等各种视觉媒体的制作。它具有完整的后期制作功能&#xff0c;包括剪辑、调色、特效、音频处理等。 以下是DaVinci Resolve Studio 18的主要特点&#xff1a; - 提供了全面的视…

IDEA中安装Docker插件实现远程访问Docker

开启远程Docker访问 #修改Docker服务文件&#xff0c;需要先切换到root用户 vim /lib/systemd/system/docker.service #注释掉"ExecStart"这一行&#xff0c;并添加下面这一行信息 ExecStart/usr/bin/dockerd -H fd:// --containerd/run/containerd/containerd.sock…

【SpringBoot】 环境准备

一.SpringBoot准备 1.下载idea 社区版 2021.1 - 2022.1.4 专业版 无要求 2.Maven 是一个工具,和Java没有关系 . 主要功能是项目构建和依赖管理. 项目构建 上述对应的都是maven命令 . 依赖管理 添加坐标之后,点击刷新,右侧就会载入依赖. Maven还有依赖传递和依赖排除功…

Simulink 自动代码生成电机控制:模型预测控制(MPC)模块使用总结(1)

目录 前言 MPC模块使用步骤和参数设计 电机控制系统验证 MPC参数调整 MPC和PI控制器比较 总结 前言 前面尝试了基于电机DQ轴电流环的传递函数设计PI控制器的参数&#xff0c;最近尝试了下模型预测控制&#xff08;MPC&#xff09;对电流环进行控制&#xff0c;这里总结一下…

智能井盖传感器能不能监测井盖位移

智能井盖传感器能够精准监测井盖的位移。这些传感器运用了前沿科技对井盖状态进行实时监测。一旦井盖出现异常移动传感器会立即捕捉到信号&#xff0c;并通过与互联网相连接的智能系统发出警报或记录数据。这种智能监测仪为城市或相关部门的井盖管理提供了实时数据支持&#xf…

Acer宏碁Predator掠夺者笔记本PH315-51原装出厂Windows10系统工厂模式ISO镜像文件

下载链接&#xff1a;https://pan.baidu.com/s/1GGRKYLQzl6SxdtCXbnzhrA?pwdrel7 提取码&#xff1a;rel7 宏基原厂Win10系统自带重置功能、带所有驱动、PredatorSense风扇键盘控制中心、Office办公软件、出厂主题壁纸、系统属性Acer宏基专属的LOGO标志、 Acer Care Center…

C#,数值计算——插值和外推,双线性插值(Bilin_interp)的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// 双线性插值 /// interpolation routines for two dimensions /// Object for bilinear interpolation on a matrix. /// Construct with a vector of x1. /// value…

Vue3-watchEffect函数

Vue3-watchEffect函数 功能&#xff1a;watchEffect 函数在一开始时就会执行一次&#xff0c;而当中的回调函数的属性发生变化&#xff0c;那么watchEffect 就会再执行一次&#xff0c;主要作用还是在于监视回调函数每次的变化。 // App.vue <template><h2>计数…

Idea 创建 Spring 项目(保姆级)

描述信息 最近卷起来&#xff0c;系统学习Spring&#xff1b;俗话说&#xff1a;万事开头难&#xff1b;创建一个Spring项目在网上找了好久没有找到好的方式&#xff1b;摸索了半天产出如下文档。 在 Idea 中新建项目 填写信息如下 生成项目目录结构 pom添加依赖 <depende…

Appium自动化测试完全指南

背景 在当今快速发展的互联网时代&#xff0c;UI 需求越来越大、越来越高大上、越来越复杂&#xff0c;相对应的 App 作为最重要的大前端的一部分&#xff0c;也不可避免。 App 迭代的不断加速&#xff0c;需求的不断复杂化&#xff0c;给测试人员增加了非常大的工作量&#…

CTFhub-RCE-过滤目录分隔符 /

根据源代码信息可知&#xff0c;过滤掉了/ <?php $res FALSE; if (isset($_GET[ip]) && $_GET[ip]) { $ip $_GET[ip]; $m []; if (!preg_match_all("/\//", $ip, $m)) { $cmd "ping -c 4 {$ip}"; exec($cmd,…

代码执行相关函数以及简单例题

代码/命令 执行系列 相关函数 &#xff08;代码注入&#xff09;

【开源】基于Vue和SpringBoot的民宿预定管理系统

项目编号&#xff1a; S 058 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S058&#xff0c;文末获取源码。} 项目编号&#xff1a;S058&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用例设计2.2 功能设计2.2.1 租客角色…