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

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

概述

上节讲述嘟妈使用vue3与建立嘟宝webrtc音视频通信后,无法再分享摄像头、麦克风的问题。
嘟宝是为监督孩子身边环境而创建的一套应用,它能够实现后台驻留长连接,随时接收嘟妈信令,建立音视频通道点对点通信,而不需要中转服务器。嘟妈是一套WEB 应用,使用vue3编写,能够兼容app、小程序开发 。而嘟宝采用原生Andorid开发,能够获取最大权限,保持在后台运行。
目前为止,嘟宝完成的基本功能设计包括

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

高德js API

地图 JS API 2.0 是高德开放平台免费提供的第四代 Web 地图渲染引擎, 以 WebGL 为主要绘图手段,本着“更轻、更快、更易用”的服务原则,广泛采用了各种前沿技术,交互体验、视觉体验大幅提升,同时提供了众多新增能力和特性

申请key


之前嘟宝使用高德定位,申请的key。这次在嘟妈使用web key,也需要申请。

安装amap-jsapi-loader库

npm i @amap/amap-jsapi-loader --save

demo演示

<template><div id="container"></div></template><script setup>import{onMounted,onUnmounted,shallowRef}from'vue';import AMapLoader from'@amap/amap-jsapi-loader';import{c}from'@/myconfig';// 配置安全密钥(更安全的做法是将密钥放在环境变量中)window._AMapSecurityConfig={securityJsCode:c.gaodesavekey// 替换为你的安全密钥};const map=shallowRef(null);onMounted(()=>{AMapLoader.load({key:c.gaodekey,// 替换为你的Keyversion:'2.0',plugins:['AMap.ToolBar','AMap.Scale']// 按需加载插件}).then((AMap)=>{// 初始化地图map.value=newAMap.Map('container',{viewMode:'2D',// 或 '3D'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();});</script><style scoped>#container{width:100%;height:100%;/* 必须设置高度,否则地图无法显示 */}</style>

关键点:

  • 使用 shallowRef 而非 ref 来存储地图实例。因为 Vue 的深度响应式代理可能会干扰高德地图原生对象,shallowRef 只监听 .value 的变化,是更安全的选择。
  • 配置安全密钥:通过设置 window._AMapSecurityConfig 对象来配置安全密钥。
  • 地图容器:确保用于承载地图的 div 元素有明确的宽高。
    效果如下图:
http://www.cnnetsun.cn/news/3264106.html

相关文章:

  • UDP网络聊天室
  • 常见的均线
  • TCP/UDP文件传输与并发服务器
  • 3分钟搞定!免费Chrome视频下载插件VideoDownloadHelper完整使用教程
  • TS项目启动慢、跳转卡顿、类型报错误报,Cursor配置全诊断,3分钟定位根因
  • cache_tuner 故障排除手册:常见问题与解决方案大全
  • 第2章:达特茅斯的夏天——一个名字的诞生
  • a++与++a:运算顺序如何影响结果
  • 静态时序分析:时序弧以及其时序敏感(单调性)
  • 独立开发者产品快速验证:用 A/B 测试和特性开关降低发布风险的工程实践
  • (8-3 )
  • (8-2-2 )
  • (6-6-2)
  • (11-4 -1 )
  • 终极解决方案:HugeJsonViewer如何轻松处理1.4GB超大JSON文件
  • 内网离线环境下自研AIGC生成文本痕迹识别方案,全流程可落地
  • 告别激活烦恼:KMS智能激活脚本如何让你的Windows和Office重获新生
  • Vegeta HTTP 负载测试工具
  • Navicat无限试用终极指南:3种强力方案解决Mac版试用期限制
  • C# WinForm俄罗斯方块项目解析:从核心逻辑到界面实现
  • LangChain Memory 架构演进全图谱(2022–2024核心迭代路径与企业级选型决策树)
  • 5分钟掌握ModTheSpire:杀戮尖塔模组加载器终极指南
  • 抖音批量下载工具:轻松保存无水印视频与音乐的终极方案
  • YaeAchievement:原神成就数据导出与UIAF格式转换终极指南
  • 167、动态分配策略中 Anchor Ratio 的重新聚类:用 K-Means 调整 YOLOv11 默认 Anchor
  • 蓝牙5.4音频开发实战:低延迟高保真方案解析
  • Spatial-Agent:大模型驱动的地理分析工作流引擎
  • 机器学习中的觉的距离和相似度
  • eBPF 与 OpenTelemetry 融合:构建分布式追踪的 eBPF 探针
  • d3d8to9:让Direct3D 8游戏在Windows 10/11上完美运行的终极解决方案