uniapp开发企业微信应用中的定位问题记录

这篇具有很好参考价值的文章主要介绍了uniapp开发企业微信应用中的定位问题记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

uniapp开发企业微信应用中的定位问题记录

项目背景:开发工具为HBuilderX,框架为uniapp,开发移动端的Web应用,在企业微信中使用(自建应用),Web开发的应用,不是小程序。
需求点:获取用户当前的位置信息,技术流程包括以下几个环节:

  • 1、获取当前用户的经纬度位置信息,用的uniapp的uni.getLocation()接口。
  • 2、显示一个地图,标记用户的位置,用的百度地图SDK。
  • 3、地图可以拖动,拖动后标记点会跟着移动,让用户可以自行调整位置。
  • 4、获取标记点详细地址,采用百度地图的逆解析API,获得详细位置信息。

uniapp开发企业微信应用中的定位问题记录

❓问题:但实际开发中定位老是不准,存在各种问题,最后通过升级HTTPS解决,记录一下处理过程。


01、百度地图

到百度地图开放平台,注册一个开发者账号,百度地图需要申请一个KEY才能使用。可根据项目情况选择个人账号,还是企业账号。

类型 个人账号 企业开发者账号
应用场景 个人学习 企业商业使用
认证方式 开发者认证,个人实名认证(已完成) 企业名称、营业执照、法人、联系方式、对公帐号信息
认证时长 很快 几分钟-5个工作日,多种认证方式
收费 白嫖 商业授权,基础版5W/年
调用限额 JS API 定位:5,000次/日,并发10次/秒
JS API 逆地理编码:5,000次/日,并发30次/秒
JS API 定位:30W次/日,并发100次/秒
JS API 逆地理编码:300W次/日,并发100次/秒

方案

  • 如果使用次数较多,则需要考虑企业账号,或购买额度。
  • 一般小项目、公司内部使用,调用频次不多,可申请个人账号,或者多申请几个账号,轮训使用。

📢 国内地图三巨头腾讯、高德、百度的商业授权都是收费的,起步价都是5W/年。

逆地址解析:

// 根据坐标获取位置描述
export function getLocationByPoint(p, BMap) {
  if (!p || !p.lng) return ''
  const gc = new BMap.Geocoder()
  return new Promise((resolve) => {
    gc.getLocation(p, (rs) => {
      const addComp = rs.addressComponents
      resolve(addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber)
    })
  })
}

坐标转换,wgs84坐标转换为火星坐标,否则在百度地图上显示会有偏差

// wgs84 坐标转百度坐标
export function WGS2BD(p, BMap) {
  const wpoint = new BMap.Point(p.lng, p.lat)
  const convertor = new BMap.Convertor()
  return new Promise(resolve => {
    convertor.translate([wpoint], 1, 5, function (data) {
      if (data.status === 0) {
        resolve(data.points[0])
      }
    })
  })
}

📄资料

  • 开发者权益
  • 商用授权服务
  • 逆地址解析
  • 地址解析在线demo

02、UNI的定位

UNI的定位核心API:uni.getLocation(OBJECT),但在使用中定位有问题。

  • uni自带的getLocation在移动端浏览器上运行正常,第一次会提示定位权限。typewgs84可定位,如果为gcj02则定位失败。
  • 如果H5应用嵌入企业微信,在企业微信中运行,则会定位失败,可能是权限问题,无法获取手机定位权限。

type String:默认为 wgs84 返回 gps 坐标,gcj02 返回国测局坐标,可用于 uni.openLocation 和 map 组件坐标,App 和 H5 需配置定位 SDK 信息才可支持 gcj02。

2.1、getLocationbug

uni.getLocation还有bug,就是如果内部调用失败,就会报错,且无法捕获,看源码(gitee源码)是其内部使用了Promise但没有处理好异常导致的,外面无法捕获。

Uncaught (in promise) Error: network error

2.2、配置地图key-没解决

定位不准,继续寻找方案。打包的H5是在企业微信中使用,就申请了一个腾讯地图的Key,在uniapp中配置。如下图,在Web配置中启用地图定位,填上腾讯开发者key。

uniapp开发企业微信应用中的定位问题记录

然而并没有什么改善,返回的定位依然是不准的。这里的不准不是有偏差,而是一个城市里的位置都一样,都指向市政府。

2.3、微信JS-SDK

企业微信为应用开发提供了一个JS-SDK,可以用来定位、获取蓝牙、摄像头等权限。

// 获取用户当前位置
wx.getLocation({
  type: 'wgs84',
  success: function (res) {
    var latitude = res.latitude;  // 纬度
    var longitude = res.longitude; // 经度
    var speed = res.speed; // 速度,以米/秒计算
    var accuracy = res.accuracy; // 位置精度,以米为单位的定位误差
    alert("您的位置是:" + latitude + "," + longitude);
  },
  fail: function (res) {
    alert("获取用户位置信息失败!");
  }
});

但使用前必须先用接口注册,流程比较麻烦,需要前后端配合。官方使用说明,看官方要求和项目情况可能存在问题,还是先试试HTTPS吧。

2.4、开启HTTPS-通过

部署的网站是HTTP的,并没有启用HTTPS,在微信小程序的开发文档中有明确说明需要HTTPS进行网络通信,那就升级到HTTPS吧。

在腾讯云申请免费的HTTPS证书,总计可以申请最多50张免费的SSL证书(其中20张免费证书支持绑定全网域名,30张免费证书可绑定腾讯云域名),成为腾讯云 V2 会员即可提升绑定全网域名的额度。

  • 免费证书不支持泛域名(*.qq.com)。
  • 免费证书有效期为1年,到期后如需继续使用证书,请重新申请并安装。
  • 正式版可以自动续费,单域名证书个人版500+/年,企业版2K+/年;泛域名证书个人版2K+/年,企业版5K+/年。

uniapp开发企业微信应用中的定位问题记录

输入域名,选择DNS验证,需要在域名解析处添加一条TEXT记录。参考官方DNS 验证文档。

uniapp开发企业微信应用中的定位问题记录

验证通过后,即可下载证书。然后配置Nginx,腾讯文档Nginx 服务器 SSL 证书安装部署。

  • 先确保Nginx是否安装了ssl模块“http_ssl_module”
  • 证书拷贝到cert 文件夹下。
  • 修改配置文件“nginx.conf ”,添加“https server”配置。
  • 重启Nginx。

配置好HTTPS的相关配置,重新打包部署,PC端正常,但移动端存在故障。移动端访问老是被重定向到HTTP上了,几经波折,发现是刚才在uniapp打包时顺手勾上了一个选项“启用https协议”,去掉就好了。😂😂😂,这个选项是干什么的?

uniapp开发企业微信应用中的定位问题记录

重新打包更新,定位准确了!😀😀😀


03、调试uniapp

可以安装微信开发者工具,用公众号网页来调试H5,打开页面后提示错误:“无法获取用户身份”。

uniapp开发企业微信应用中的定位问题记录

需要两个条件:

  • 1、开启开发者模式:我的企业 -> 微信插件 -> 开发者工具勾选上

uniapp开发企业微信应用中的定位问题记录

  • 2、注意是“当前管理员”,开发者工具登录的微信必须是当前企业微信的管理员。

参考资料:

  • 腾讯位置服务开发者后台
  • 百度地图开放平台
  • 企业微信自建应用踩坑指南
  • 企业微信小程序_获取准确定位的方法及解决定位不准确的问题
  • 腾讯云Https(SSL)证书申请与使用

©️版权申明:版权所有@安木夕,本文内容仅供学习,欢迎指正、交流,转载请注明出处!原文编辑地址-语雀文章来源地址https://www.toymoban.com/news/detail-442935.html

到了这里,关于uniapp开发企业微信应用中的定位问题记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何实现无公网IP及服务器实现公网环境企业微信网页应用开发调试

    企业微信开发者在应用的开发测试阶段,应用服务通常是部署在开发环境,在有数据回调的开发场景下,企业微信的回调数据无法直接请求到开发环境的服务。 内网穿透工具可以帮助开发者将应用开发调试过程中的回调请求,穿透到本地的开发环境。 Cpolar是一种安全的内网

    2024年04月09日
    浏览(46)
  • 企业微信hook接口,朋友圈功能开发教程,逆向开发,企业微信营销开发

    【技术支持】 支持语言 操作码 110001 请求说明 参数名 必选 类型 说明 syncKey 是 string 同步key 请求示例 返回示例 简要描述 110003 请求说明 参数名 必选 类型 说明 syncKey 是 string 同步key 请求示例 返回示例 基本实现企业微信pc端所有功能。 1.登陆模块: 接收登录二维码,登录成

    2024年02月11日
    浏览(43)
  • 企业微信 企业内部开发 学习笔记

    文档 术语介绍 登录 后台 https://work.weixin.qq.com/wework_admin/frame#apps,新建应用 可以获取 AgentId 配置服务器地址

    2024年02月13日
    浏览(36)
  • 云表|低代码开发崛起:重新定义企业级应用开发

    nbsp; nbsp; nbsp; nbsp;低代码开发这个概念在近年来越来越受到人们的关注,市场对于低代码的需求也日益增长。据Gartner预测,到2025年,75%的大型企业将使用至少四种低代码/无代码开发工具,用于IT应用开发和公民开发计划。 nbsp; nbsp; nbsp; nbsp;那么,为什么低代码开发如此受到

    2024年02月08日
    浏览(48)
  • BizWorks 助力企业应用的高效开发与复用

    企业在数字化转型过程中,为了提高效率、降低成本,追求如何快速高效地开发企业应用,以及如何有效复用现有的应用资产,避免重复造轮子。 BizWorks是阿里云发布的一体化的云原生应用的开发和运营平台,其提供的产品能力普遍适用于企业云原生应用高效开发以及企业资

    2024年02月10日
    浏览(50)
  • 低代码内容分享(九):开源,免费!低代码开发企业应用

    目录 前言 你说的“无头”是什么意思? 无头路由  尝试精炼 用例 主要特征 快速开始 下一步 用于构建内部工具、管理面板、仪表板和 B2B 应用程序的 React 框架,具有无与伦比的灵活性。 源代码地址 http://www.gitpp.com/farsoft/refine 可以开发各种企业级应用 高颜值 原理图:  

    2024年02月19日
    浏览(38)
  • Mysql 数据库开发及企业级应用

    1.1、为什么要使用数据库 ​ 程序员 Jack 还是在在校学习期间, 就听高年级的大哥忠告, “ 小伙子, 搞编程, 想要成为最牛逼的程序员, 一定要学好 C/C++语言和数据结构及算法” , Jack 谨记了这句忠告, 因为这位高年级的哥们还没毕业就已经被 BAT 公司预定, 在学校那是

    2024年02月16日
    浏览(52)
  • Java EE 企业级应用开发教程题库(第二版)

      Java EE这是一门偏向于实践的课,奈何考试理论居多。一学期想搞懂三个框架,嘿嘿,难哦!如果你是大一大二的同学,认认真真学习,真的有用。如果你是大三的同学,像就业并且走这个方向的同学,也认真学习。如果你大三考研的同学,自己安排时间。这里是我平时的

    2024年02月09日
    浏览(46)
  • Java EE企业级应用开发(SSM)第9章

    1.MyBatis框架的特点 1-1.简单易学 1-2.灵活 1-3.提供映射标签 2.MyBatis核心类 2-1.Configuration 2-2.SqlSessionFactory 2-3.SqlSession 2-4.Exector 2-5.MappedStatement 3.MyBatis工作流程 4.Mybatis入门程序 4-0:导入jar包资源 4-1:编写实体类 4-2:编写mapper接口以及映射文件 4-3:编写mybatis-config配置文件 4-4:编

    2024年02月04日
    浏览(50)
  • Java EE企业级应用开发(SSM)第10章

    1.第九章的细节处理 1-1.mappers标签中的配置 1-2.jdbc属性文件的配置 1-3.包的别名配置 2.Mybatis核心配置文件 2-1:settings标签(P145-146中的表10-1) 2-2.类型别名 3.Mybatis映射文件 3-1:insert、update、delete元素属性 3-2:select元素 3-3:ResultMap详解 ResultMap详解 4.动态SQL 4-1:if 注意模糊查询

    2024年02月03日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包