mapbox-gl 移动端(H5)位置共享交互

news2024/10/6 23:21:10

文章目录

  • 前言
  • 逆地理编码:获取周边地点
  • 地理编码:查询位置
  • 大头针选位
  • 位置卡片


前言

分享最近写的一个小demo,功能类似微信小程序端的大头针位置共享功能,需要实现的主要功能包括位置查询、周边地点检索、位置定位等,数据采用天地图球面墨卡托(WGS84)的 WMTS 矢量底图与标记服务,框架采用Taro。首页如下


在这里插入图片描述

逆地理编码:获取周边地点

逆地理编码是借助经纬度坐标信息得到标准的地址信息的过程,在mapbox-gl中,借助 Marker 组件实现大头针效果,需要注意的点有二

  • 底图移动时保持大头针始终保持在地图中央
  • 底图停止移动时,发送请求获取周边位置列表
// 监听地图移动,实时设置大头针位置
 mapRef?.current.on('move', markerMove);
 // 监听地图停止移动,获取周边详情
 mapRef?.current.on('dragend', markerMoveEnd);

在这里插入图片描述

地理编码:查询位置

一个简单的查询功能,选择地址后锁定相机视角

在这里插入图片描述

大头针选位

也可以手动拖动大头针选取位置,通过点击更新大头针位置,不过这样的话与保持大头针在中央会有矛盾点,建议二选其一

markerRef.current.setDraggable(true);

在这里插入图片描述

位置卡片

截取当前canvas上的要素,包括大头针,但不能将返回键截图进去,借助 html2canvas

  const saveImg = async () => {
    const mapDom = document.getElementById('mapcontainer')
   
    html2canvas(mapDom, {
      scale:1.0 ,// 保持原始大小
      allowTaint: true,
      useCORS: true,
      logging: true,
      
    }).then(canvas => {
      const imgurl = canvas.toDataURL();   // 获取64位编码
      console.log(imgurl);
      sendImageRequest(imgurl)
    });
  }

封装一个请求图片的请求查看截图效果

  function sendImageRequest(src) {
    console.log(src)
    return new Promise((resolve, reject) => {
      const canvas = document.createElement('canvas');
      const ctx = canvas.getContext('2d');
      const img = new Image();
      img.onload = () =>{
        ctx?.drawImage(img, 0, 0);
        resolve(canvas.toDataURL('image/png'));
      }
      img.onerror = () =>{
        reject()
      }
    
      img.src = src;
    });
  }

在这里插入图片描述

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

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

相关文章

BUUCTF jarvisoj_level0

小白垃圾做题笔记而已,不建议阅读。。。 这道题感觉主要就是64位程序ebp8 题目中给出了shellcode 我们直接将返回地址覆盖就好。 在main函数中调用了vulnerable_function()函数。 vulnerable函数是一个漏洞函数:(存在缓溢出),我们只需要将…

html-audio标签样式重写思路

搭配slider 组件 ,利用原生audio的属性和方法重写样式 写个样式.监听url变化 初始化绑定播放, 拖动进度条,拖动音量, 静音按钮等事件 const audioRef ref(null) // 绑定audio标签 const playProcess ref(0) // 进度条绑定的值 const volume ref(1) // 音量绑定的值 const …

C++ STL之vector容器

目录 一、vector容器的介绍 二、vector容器的使用 1.vector的构造函数 2.vector的赋值操作 3.vector的容量与大小 4.vector的插入和删除 5.vector的数据存取 6.vector的互换容器 7.算法模块在vector的应用 ①find算法(std) ②sort算法(std) 一、vector容器的介绍 引…

07 - 进程创建大盘点

---- 整理自狄泰软件唐佐林老师课程 查看所有文章链接:(更新中)Linux系统编程训练营 - 目录 文章目录 1. 进程创建回顾2. 再论进程创建2.1 思考2.2 vfork()深度分析2.3 vfork()要点分析2.4 fork()的现代优化2.5 编程实验:fork() &…

【安卓源码】Binder机制2 -- addService 流程

0、binder 进程间通信原理 一次完整的 Binder IPC 通信过程通常是这样: 首先 Binder 驱动在内核空间创建一个数据接收缓存区; 接着在内核空间开辟一块内核缓存区,建立内核缓存区和内核中数据接收缓存区之间的映射关系,以及内核中…

PHP入门【1】环境搭建

目录 一,安装appserv组合包 二,运行第一个php程序 一,安装appserv组合包 组合包:将apache,mysql,php等服务器软件和工具安装配置完成后打包处理 组合包大大提高了我们的效率,不需要为配置环境…

Linux服务器出现503 服务不可用错误怎么办?

​  HTTP 503 服务不可用错误代码表示网站暂时不可用。无论您是网站访问者还是管理员,503 页面都很麻烦。尽管该错误表明存在服务器端问题,但对于访问者和网络管理员来说,有一些可能的解决方案。本文将解释Linux服务器出现503 服务不可用错…

PowerShell Studio 2023 Crack

PowerShell Studio 2023 Crack SAPIEN Script Packager为MSI Builder添加了ARM64平台支持。 增加了对Microsoft PowerShell 7.2.11和7.3.4的支持。 WiX工具集已更新到3.14。 PowerShell Studio 2023 Crack是可用的功能最强大、功能最完整的PowerShell集成脚本环境(ISE)之一。更…

通达信VCP形态选股公式,憋了好几天才写出来

VCP形态的英文”Volatility Contraction Pattern”的缩写,意思是“波动收缩形态”。VCP形态是全美交易冠军马克米勒维尼的核心交易模式之一,在其著作《股票魔法师》中有详细介绍。 马克米勒维尼把VCP形态比喻为湿毛巾,拧过一次后仍含水&…

动态链接库的链接和运行

本文对动态链接库的链接和运行进行一个总结,为什么要分开说呢?因为链接通过生成可执行文件并不代表运行时能找到依赖的动态库。这与静态库是不一样的,因为静态库在编译完成后会库会编译到可执行程序中,但是动态链接库则不然&#…

最新研究:可审计的具有拜占庭鲁棒的联邦学习方案

本人新论文,可免费下载:https://download.csdn.net/download/liangyihuai/87727720 Y. Liang, Y. Li and B. -S. Shin, “Auditable Federated Learning With Byzantine Robustness,” in IEEE Transactions on Computational Social Systems, doi: 10.…

【Unity3D日常开发】Unity3D中实现UI擦除效果、刮刮卡功能

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 使用Unity3D实现UI的擦拭效果、刮刮卡功能的效果实现方式比较多…

Python基于Pytorch Transformer实现对iris鸢尾花的分类预测,分别使用CPU和GPU训练

1、鸢尾花数据iris.csv iris数据集是机器学习中一个经典的数据集,由英国统计学家Ronald Fisher在1936年收集整理而成。该数据集包含了3种不同品种的鸢尾花(Iris Setosa,Iris Versicolour,Iris Virginica)各50个样本&am…

BatchNormalization和LayerNormalization的理解、适用范围、PyTorch代码示例

文章目录 为什么要NormalizationBatchNormLayerNormtorch代码示例 学习神经网络归一化时,文章形形色色,但没找到适合小白通俗易懂且全面的。学习过后,特此记录。 为什么要Normalization 当输入数据量级极大或极小时,为保证输出数…

【算法基础】直接插入排序 + 希尔排序

👦个人主页:Weraphael ✍🏻作者简介:目前正在学习c和算法 ✈️专栏:【C/C】算法 🐋 希望大家多多支持,咱一起进步!😁 如果文章有啥瑕疵 希望大佬指点一二 如果文章对你有…

基于人类反馈的强化学习(RLHF)在LLM领域是如何运作的?

基于人类反馈的强化学习在LLM领域是如何运作的? 为什么需要强化学习RLHFPre-training modelReward ModelFine-tune with RL 参考 为什么需要强化学习 指标无法衡量。在过去的nlp任务中,词性标注、机器翻译、语义判别等任务是nlp任务的主力军&#xff0c…

Hytrix原理

这里写目录标题 Hytrix容错机制熔断资源隔离线程池隔离信号量隔离 服务降级请求缓存请求合并 Hystrix流程图 Hytrix容错机制 熔断 在一个统计时间窗口(HYST rixCommandProperties.metricsRollingStatisticalWindowInMilliseconds())内,处理…

转化率双倍暴涨——客户自助服务门户

近年来,社交媒体的兴起使客户负责品牌对话。随着电子商务和在线帮助需求的扩大,公司必须满足并超越新的期望,以保持客户满意度。 通过SaleSmartly(ss客服)自动化流程功能建立客户自助服务是一种双赢的决策&#xff0c…

Ajax XHR响应

文章目录 AJAX 服务器 响应服务器响应responseText 属性responseXML 属性 AJAX 服务器 响应 服务器响应 如需获得来自服务器的响应,请使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。 属性描述responseText获得字符串形式的响应数据。responseXML…

2015年下半年软件设计师下午试题

试题一 【说明】 某慕课教育平台欲添加在线作业批改系统,以实现高效的作业提交与批改,并进行统计。学生和讲师的基本信息已经初始化为数据库中的学生表和讲师表。系统的主要功能如下: 提交作业。验证学生标识后,学生将电子作业通…