当前位置: 首页 > news >正文

手把手编写儿童手机远程监控App之vue3使用高德地图2

概述

上节完成vue3高德地图应用,能够在一个页面中,加载高德地图。使用高德地图,需要两步,详情参看上节

  • 申请高德key
  • 安装官方库amap-jsapi-loader
    在页面给一个div,初始化高德api,注意div要设置高度,否则画面显示空白。
<template><div id="container"></div></div></template>import{onMounted,onUnmounted,shallowRef,ref}from'vue'import AMapLoader from'@amap/amap-jsapi-loader'onMounted(()=>{AMapLoader.load({key:c.gaodekey,version:'2.0',plugins:['AMap.ToolBar','AMap.Scale'],}).then((AMap2)=>{AMap=AMap2;map.value=newAMap.Map('container',{viewMode:'2D',zoom:12,center:[116.397428,39.90923],})map?.value.addControl(newAMap.ToolBar())map?.value.addControl(newAMap.Scale())}).catch((e)=>{console.error('地图加载失败:',e)})})onUnmounted(()=>{map.value?.destroy()})

一个简单的高德页面生成了。
嘟宝是为监督孩子身边环境而创建的一套应用,它能够实现后台驻留长连接,随时接收嘟妈信令,建立音视频通道点对点通信,而不需要中转服务器。嘟妈是一套WEB 应用,使用vue3编写,能够兼容app、小程序开发 。而嘟宝采用原生Andorid开发,能够获取最大权限,保持在后台运行。
目前为止,嘟宝完成的基本功能设计包括

  • MQTT 基础通信
  • 后台驻留
  • SQLite数据存储
  • 二维码显示身份识别码
  • 开启自启动前台服务
  • 任务栏消息发送与点击
  • 高德定位实时更新
  • webrtc点对点通信
  • mAgentWeb控件封装解决全屏与获取视频权限问题
    嘟妈采用vue3编写它的核心需求已完成包含以下部分:
  • 完成登录注册页面
  • 完成二维码扫描完成与嘟宝绑定
  • 与嘟妈建立音视频通信
  • 查看嘟宝桌面共享视频
    项目地址在github上。
    嘟宝地址
    嘟妈地址
    嘟宝实时记录位置在存储本地,嘟妈通过MQTT信令查询当前位置、历史位置,并在地图上显示位置与历史轨迹

地图显示位置

  • 通过mqtt发送信令,获取嘟宝的gps信息
  • 获取到gps信息,在地图显示位置坐标
  • 将位置坐标设置为地图的中线点
<template><div id="container"></div></template><script setup lang="ts">import{onMounted,onUnmounted,shallowRef,ref}from'vue'import AMapLoader from'@amap/amap-jsapi-loader'(window as any)._AMapSecurityConfig={securityJsCode:c.gaodesavekey,}let AMap:any;const map=shallowRef<any>(null);// 方式1:使用 anyconst router=useRouter()const route=useRoute()const dubaoId=route.params.dubaoId const goBack=()=>{router.back()}const goMore=()=>{showMenu.value=true}onMounted(()=>{AMapLoader.load({key:c.gaodekey,version:'2.0',plugins:['AMap.ToolBar','AMap.Scale'],}).then((AMap2)=>{AMap=AMap2;map.value=newAMap.Map('container',{viewMode:'2D',zoom:12,center:[116.397428,39.90923],})map?.value.addControl(newAMap.ToolBar())map?.value.addControl(newAMap.Scale())let stop=Date.now();let start=stop-1000*60*60*24*7;mqtt.pushmsg(dubaoId as string,'gps',JSON.stringify({page:1,rows:1,start:start,stop:stop}));maker({lng:117.397428,lat:39.90923,name:'嘟宝'})}).catch((e)=>{console.error('地图加载失败:',e)})})onUnmounted(()=>{map.value?.destroy()})functionmaker(gps:any){if(!map.value)returnlet name=dubao.getDuBao(dubaoId as string)?.dubaoName||'嘟宝'const marker=newAMap.Marker({position:newAMap.LngLat(gps.lng,gps.lat),title:name,animation:'AMAP_ANIMATION_DROP'// 落点动画});marker.on('click',(e:any)=>{const infoWindow=newAMap.InfoWindow({content:`<div style="padding: 5px;">${name}</div>`,offset:newAMap.Pixel(0,-30),})infoWindow.open(map.value,marker.getPosition())console.log('Marker clicked:',name,e)})// 添加到地图map.value.add(marker);map.value.setCenter(marker.getPosition());}</script><style scoped>#container{width:100%;height:100%;}</style>

运行查看效果

http://www.jsqmd.com/news/1170166/

相关文章:

  • Unity高性能动画系统实战:Playable API与Animation Job优化指南
  • 【ChatGPT YAML生成实战指南】:20年SRE亲授——3类高危配置错误自动拦截+5个生产级模板即拷即用
  • AI编码助手的出现,还需要AI应用开发框架吗?
  • SysML v2:如何通过语义内核重构与标准化API实现系统工程建模范式革新
  • Unity事件中心系统:从强类型设计到可配置化与性能优化实战
  • docx 文件结构深度解析:3个关键XML文件与Word格式控制逻辑
  • 计算机体系结构核心 4 大设计原则:从胡伟武《基础》到龙芯 3A6000 的实践
  • 转碱工艺详介--(中国恩菲转碱工艺)
  • 如何理解 C#/.NET 的依赖注入与生命周期
  • 瑞芯微RV1126B开发板(EASY-EAI-PI2) OSD(字符叠加)
  • Open-Shell:让Windows开始菜单回归经典的终极解决方案
  • Aria2GUI:macOS上最强大的免费下载管理器终极指南
  • TPS61170与TM4C1294NCZAD的高效DC-DC升压系统设计
  • 3分钟零成本激活Windows和Office:智能脚本让系统管理变得如此简单
  • UE4游戏菜单背景模糊实战:从原理到性能优化的完整指南
  • 高精度ADC ADS122U04与PIC18F2515的接口设计与应用
  • 宜昌西陵区黄金回收实地测评|深耕 30 年正规连锁老店,全城免费上门零隐形扣费 - 华金汇黄金回收
  • Windows 10 下 AirSim 1.3.1 与 UE4.27.2 编译配置全攻略
  • RLC 串联电路阻抗计算实战:从 3 个元件参数到 1 个复阻抗的 4 步推导
  • 12864液晶显示优化:3种取模方式对比与动态刷新策略
  • mba毕业论文开题报告怎么写
  • openEuler OBS故障排除手册:常见问题与解决方案大全
  • Shell 结构化命令学习
  • 医疗AI隐藏失败模式:从实验室到临床部署的泛化挑战与解决方案
  • 一人公司实战指南:AI时代的小而全职业基建
  • 2026安卓谷歌服务兼容性修复指南:GMS认证与模块化适配
  • 2026年7月最新沈阳芝柏官方售后客服服务电话及地址网点大全 - 亨得利官方服务中心
  • STM32程序编辑使用库(每天更新版)
  • 大抽数纸巾哪家性价比高:联盛森宝效果臻选 - MXyuyu
  • 小米运动自动刷步数终极指南:5分钟实现全天候步数自动化管理