【uniapp】Google Maps
话不多说 直接上干货 提前申请谷歌地图账号
一、新建地图 使用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”
相关文章:

【uniapp】Google Maps
话不多说 直接上干货 提前申请谷歌地图账号一、新建地图 使用h5获取当前定位或者使用三方uniapp插件 var coords ""navigator.geolocation.getCurrentPosition(function(position) {coords {lat: position.coords.latitude,lng: position.coords.longitude};lats …...

C语言变量与常量
跟着肯哥(不是我)学C语言的变量和常量、跨文件访问、栈空间 栈空间还不清楚,期待明天的课程内容 C变量 变量(Variable)是用于存储和表示数据值的名称。 主要包括四个环节:定义、初始化、声明、使用 在我刚…...

AI创作系统ChatGPT网站源码/支持DALL-E3文生图/支持最新GPT-4-Turbo模型+Prompt应用
一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…...

二维码智慧门牌管理系统升级,异常门牌聚合解决方案助力高效管理
文章目录 前言一、异常门牌聚合解决方案 前言 在今天的数字化时代,智慧城市已成为发展趋势,其中二维码智慧门牌管理系统扮演着至关重要的角色。通过对门牌信息进行数字化管理,该系统极大提升了城市管理的效率和便捷性。然而,随着…...

【XTDrone Ubuntu20.04】XTDrone+ Ubuntu20.04 + PX4安装
XTDrone仿真平台配置 文章目录 XTDrone仿真平台配置依赖安装 ROS一键安装Marvos安装PX4 安装安装QTGroundControlXTDrone下载安装 环境: VMWare 16.0 Ubuntu 22.04 (因为没人配过)Ubuntu 20.04 参考文章: 仿真平台基础配置 (yuq…...

河北大学选择ZStack Cube超融合一体机打造实训云平台
河北大学通过云轴科技ZStack Cube超融合一体机构建校园实训云平台,部署测试仅耗时1天,该平台能够更快地为学生提供高性能、高可用的云主机、云存储和云网络服务;同时也能满足日常运维管理要求,为学生提供更好的实训环境。 河北省…...

IDEA远程一键部署SpringBoot到Docker
IDEA是Java开发利器,Spring Boot是Java生态中最流行的微服务框架,docker是时下最火的容器技术,那么它们结合在一起会产生什么化学反应呢? 一、开发前准备 1. Docker安装 可以参考:https://docs.docker.com/install/ 2…...
索引三星结构
三星索引的定义,可以先给我们对索引优化提供一个大概的思路: 满足第1颗星: 取出所有的等值谓词的列,作为索引最开头的列——以任意顺序都可以。 满足第2颗星: 将order by加入到索引列,不要改变这些列的顺…...
rust 笔记 高级错误处理
文章目录 错误处理组合器or() 和 and()or_else() 和 and_then()filtermap() 和 map_err()map_or() 和 map_or_else()ok_or() and ok_or_else() 自定义错误类型错误转换 From 特征 归一化不同的错误类型Box<dyn Error>自定义错误类型 简化错误处理thiserroranyhow 错误处理…...
python+Django 使用apscheduler实现定时任务 管理调度
apscheduler实现定时任务 管理调度 在Django 项目中经常会用到定时任务去处理一些业务处理 使用 APScheduler 可以轻松地实现定时任务的管理和调度。你可以通过以下步骤来创建、启动、停止和删除定时任务: 1.创建调度器对象: from apscheduler.schedu…...

Java编程中,异步操作流程中,最终一致性以及重试补偿的设计与实现
一、背景 微服务设计中,跨服务的调用,由于网络或程序故障等各种原因,经常会出现调用失败而需要重试。另外,在异步操作中,我们提供接口让外部服务回调。回调过程中,也可能出现故障。 这就要求我们主动向外…...

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

Postman批量运行用例
近期在复习Postman的基础知识,在小破站上跟着百里老师系统复习了一遍,也做了一些笔记,希望可以给大家一点点启发。 一)注意点 有上传文件的接口,需要做如下设置: 1、打开能读取外部文件的开关 2、把需要…...
20个Golang最佳实践
在本教程中,我们将探讨 Golang 中的 20 个最佳编码实践。它将帮助您编写有效的 Go 代码。 #20:使用正确的缩进 良好的缩进使您的代码具有可读性。一致地使用制表符或空格(最好是制表符)并遵循 Go 标准缩进约定。 package main …...
Java 类之 java.lang.System
Java 类之 java.lang.System 文章目录 Java 类之 java.lang.System一、简介二、主要功能1、currentTimeMillis() - 获取当前时间的毫秒数说明代码示例 2、getProperty(String key) - 获取系统属性说明代码示例 3、exit(int status) - 终止虚拟机说明代码示例 4、arraycopy(Obje…...
认识Modbus通信协议(笔记)
Modbus 莫迪康 1979年 PLC 1969年 什么是modbus? 它是一个Bus,即总线协议。比如串口协议、IIC协议、SPI都是通信协议。 协议,顾名思义是一种规定和约束 Modbus协议是一种引用层的报文传输协议,RTU、ASCLL、TCP,都属于Modbus协…...

【算法】距离(最近公共祖先节点)
题目 给出 n 个点的一棵树,多次询问两点之间的最短距离。 注意: 边是无向的。所有节点的编号是 1,2,…,n。 输入格式 第一行为两个整数 n 和 m。n 表示点数,m 表示询问次数; 下来 n−1 行,每行三个整数 x,y,k&am…...

基于SpringBoot的SSMP整合案例(消息一致性处理与表现层开发)
消息一致性处理 在后端执行完相应的操作后,我们需要将执行操作后的结果与数据返回前端,前端 调用我们传回去的数据,前端是如何知道我们传回去的数据名称的? 答:前后端遵循了同一个"协议"。这个协议就是定义…...

c#之反射详解
总目录 文章目录 总目录一、反射是什么?1、C#编译运行过程2、反射与元数据3、反射的优缺点 二、反射的使用1、反射相关的类和命名空间1、System.Type类的应用2、System.Activator类的应用3、System.Reflection.Assembly类的应用4、System.Reflection.Module类的应用…...

synchronized jvm实现思考
底层实现时,为什么使用了cxq队列和entryList双向链表?这里为什么不跟AQS中使用一个队列就行了,加了一个entryList的目的是为了什么? 个人理解这里多一个entryList,可能是用于减少频繁的cas操作。假设存在很多锁竞争时&…...

IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...

遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...

基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...

什么是VR全景技术
VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...

软件工程 期末复习
瀑布模型:计划 螺旋模型:风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合:模块内部功能紧密 模块之间依赖程度小 高内聚:指的是一个模块内部的功能应该紧密相关。换句话说,一个模块应当只实现单一的功能…...

基于单片机的宠物屋智能系统设计与实现(论文+源码)
本设计基于单片机的宠物屋智能系统核心是实现对宠物生活环境及状态的智能管理。系统以单片机为中枢,连接红外测温传感器,可实时精准捕捉宠物体温变化,以便及时发现健康异常;水位检测传感器时刻监测饮用水余量,防止宠物…...