手机H5页面在IOS系统中无法获取Geolocation

news/2024/9/29 15:19:22

需求

在开发H5页面的时候希望获取用户的地理位置信息,这里演示在用户上传图片的时候将用户的地理位置信息作为水印显示。

问题

在安卓手机使用vant-upload组件是没问题的,但是在IOS手机上有,报下面的提示信息。

原因

苹果的IOS做了限制,如果需要使用IOS的服务,必须是HTTS协议的域名,不能是HTTP。

步骤

这里使用的是vue-cli脚手架,当前版本如下截图

  1. 开启https服务,在vue.config.js进行如下配置,然后重新启动项目:
module.exports = defineConfig({devServer: {server: 'https',},
})

  1. 然后用手机浏览器就可以直接上传了,然后在图片上有水印信息

效果

代码

<template><div class="app" ref="appRef"><van-uploader v-model="file_list" :before-read="beforeRead" /></div>
</template><script>
import { Dialog } from 'vant'
import watermark from 'watermarkjs'
export default {data() {return {file_list: [],}},methods: {beforeRead(file) {return new Promise((resolve, reject) => {let text = ''function success_cb(pos) {var { latitude, longitude } = pos.coordstext = `经度:${latitude},纬度:${longitude}`generateWatermark()}function error_cb(err) {text = err.messagegenerateWatermark()Dialog({ message: text })console.log('error', err)}navigator.geolocation.getCurrentPosition(success_cb, error_cb, {enableHighAccuracy: false,timeout: 3000,maximumAge: 0,})function customFn(target) {var context = target.getContext('2d')// var text = textvar metrics = context.measureText(text)var x = 0.01 * target.widthvar y = 0.04 * target.heightconst fontSize = 0.05 * target.widthcontext.translate(x, y)context.globalAlpha = 0.5context.fillStyle = '#f00'context.font = `700 ${fontSize}px Josefin Slab`context.fillText(text, 0, 0)return target}const generateWatermark = () => {watermark([file]).image(customFn).then((img) => {this.$refs.appRef.append(img)const watermark_file = this.dataURLtoFile(img.src, file.name)console.log(watermark_file)resolve(watermark_file)// this.transformFileToBase64(watermark_file, file)})}})},dataURLtoFile(dataurl, filename) {var arr = dataurl.split(','),mime = arr[0].match(/:(.*?);/)[1],bstr = atob(arr[1]),n = bstr.length,u8arr = new Uint8Array(n)while (n--) {u8arr[n] = bstr.charCodeAt(n)}return new File([u8arr], filename, { type: mime })},},
}
</script><style lang="less" scoped>
.app {padding: 50px;
}
</style>

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

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

相关文章

项目冲刺day3

这个作业属于哪个课程 软工4班这个作业要求在哪里 作业要求1.会议1. 照片 时间冲突,采用微信聊天方式2. 昨日已完成: 完成登录、注册功能,部分完成用户中心功能3.今天计划完成的工作 用户中心功能、订单管理功能4.工作中遇到的困难 沟通和信息共享并不总是顺利。这导致了一些…

MySQL面试必备二之binlog日志

本文首发于公众号:Hunter后端 原文链接:MySQL面试必备二之binlog日志关于 binlog,常被问到几个面试问题如下:binlog 是什么 binlog 都记录什么数据 binlog 都有哪些类型,都有什么特点 如何使用 binlog 恢复数据 binlog 都有哪些作用 binlog 属于逻辑日志还是物理日志基于上…

开源RAG框架汇总

前言 本文搜集了一些开源的基于LLM的RAG(Retrieval-Augmented Generation)框架,旨在吸纳业界最新的RAG应用方法与思路。如有错误或者意见可以提出,同时也欢迎大家把自己常用而这里未列出的框架贡献出来,感谢~ RAG应用框架RAGFlow项目地址:https://github.com/infiniflow/…

kali中arp欺骗,连上校园网断舍友的网

首先kali的配置: 参考网站:https://jingyan.baidu.com/article/2c8c281d145cf44108252a97.html 然后下载arpspoof插件: apt-get install dsniff然后一条命令: arpspoof -i eth0 -t 受害者的ip 网关//这个网关是你自己连上校园网的那个网关

Scrum冲刺4--5.10

Scrum冲刺4--5.10这个作业属于哪个课程 软件工程这个作业要求在哪里 团队项目这个作业的目标 进行敏捷冲刺,熟悉团队合作开发前端仓库 前端后端仓库 后端每次冲刺日志索引时间 博客5.7 Day1ᕙ(`▿)ᕗ5.8 Day2ᕙ(• ॒ ູ•)ᕘ5.9 Day3(˚ ˃̣̣̥᷄⌓˂̣̣̥᷅ )5.10 Day4 (…

敏捷冲刺day3--数字工匠队

这个作业属于哪个课程 软件工程这个作业的要求是什么 项目冲刺这个作业的目标 冲刺日志3站立式会议照片工作困难 处理任务时遇到一些问题需要上网学习花费时间 昨日完成工作 部分登录界面前后端处理代码 今日计划工作 继续完成登录界面前后端处理 项目燃尽图每日总结 邹嘉伟:继…

第 3 篇 Scrum 冲刺博客

每天举行站立式会议 昨天已完成的工作: 今天计划完成的工作: 工作中遇到的困难: 项目燃尽图代码/文档签入记录项目展示每日每人总结 李健宇:明天加油。 陈彦煤:尽力完成,克服困难。

SpringBoot整合Mybatis时mapper文件和xml文件的位置

xml文件放在resources下看下我的项目目录2.由于放在resurces下就无法扫描到xml文件,所以就需要在配置文件配置--mapper文件位置 mybatis.mapper-locations=classpath:mapper/*.xml 或 mybatis.mapper-locations=classpath:/mapper/*.xmlxml和mapper文件放在一起我的项目目录但…