前端实现移动端签到功能(vant+微信JS-SDK)

前言:

最近在开发一个在企业微信执行的模块,起初我以为企业微信不是个APP吗,那不是要写APP了。

后面才知道直接写页面对接好,交给后台操作一下就可以在企业微信上执行了。


实现功能:

签到显示当前位置。


实现框架和工具:

vant

百度地图  (后改为腾讯地图)

微信js-sdk


问题:

在说解决方法的之前,先说说我在实现签到过程中遇到的问题!

之前,我还没有用到微信js-sdk的api,是直接使用百度地图的定位获取用户的经纬度,然后根据经纬度去调用百度地图的逆地址解析接口。

结果发现一个很狗血的问题,定位出来的地点在苹果手机上是准确的,但在安卓上就差了几十公里远。后来无论如何查询都没有办法。只能选择微信的js-sdk来实现这个功能。

接下来详细的讲讲这个功能的开发和一些开发过程中的问题。


实现:

首先,整个签到的功能逻辑是很清晰的。

第一:利用微信js-sdk获取用户的经纬度。

第二:利用百度地图将经纬度转为地址(过程还是有点坎坷)


步骤一:利用微信js-sdk获取用户的经纬度

1、首先我们要在vue中引入微信js-sdk

      npm i -S weixin-js-sdk

2、在页面中引入

      import wx from 'weixin-js-sdk'

3、配置wx.config

wx.config

我在使用微信js-sdk的时候,最大的烦恼就是不知道怎么在vue页面上用。所以我记录一下这个方法。

和小程序差不多,但是我一直纠结的是,如果在vue里面写,我是应该在哪个生命周期上配置这个config吗?

后来查了一下才知道,其实我们可以直接写在函数里面,在使用的时候再去配置也是可以的。

或者在created生命周期上就配置好,那么后面也不用在进行配置了。(这里我理解的大概是这样,毕竟我只是调用了它的一小块功能而已)

1、首先,这些配置是通过后台获取的。

调用接口获取必选配置

2、在页面初始化时调用


调用

以上就是我们配置的方法。

配置结束之后,我们就可以调用SDK里面的方法。

下图是我签到的样式部分。

签到部分

下图是方法。

在看方法的时候,先讲一点比较重要的。

wx.getLocation是SDK里面的方法,想要调用方法必须在一开始的我们配置的那里配置好我们要使用的方法,才可以使用,例如:

在jsApiList中配置好
签到的方法,

3、上面基本是所有的使用部分。接下来再分析签到功能

首先,我们调用微信SDK的目的只是为了拿到经纬度。

但在此之前,我们还是要调用百度地图,在我使用百度地图的时候遇到一点问题。如果你的请求是在开始前操作的。也就是页面初始就要获取到经纬度和位置,你可能会发现百度地图你引用不了。原因是可能经纬度拿到了,但是百度地图还没有加载完。

所以我们可以先加载百度地图。


MP方法


map.js
定义一个方法用来引入百度地图


在页面初始化时执行


这个时候,我们就已经加载了百度地图了。

当点击签到的时候,开始调用微信的SDK方法。

通过wx.getLocation可以获取到经纬度。

然后通过调用getAddress() 把经纬度交给百度地图转为地址

获取经纬度

在调用getAddress之前,我们还会有一个坑,那就是微信的sdk使用的gps定位,但百度地图时用百度地图自己设置的定位方式,我们可以通过gcoord来转换。

GitHub - hujiulong/gcoord: 地理坐标系转换工具,支持WGS84/GCJ02/BD09等常用坐标系互转

通过 npm install gcoord --save 引入转为工具


在页面中引入


转换为地址


补充:

在我基本确认这个功能没问题的时候,甲方在签到的时候发现了还有十几米左右的误差(虽然我这边没有)。

后面直接该用腾讯地图进行逆地址转换。

因为高德地图、腾讯地图以及谷歌中国区地图使用的是GCJ-02坐标系,通过企业微信获取的经纬度是不需要特殊转码的。因为他也是根据GCJ-02的坐标系的。

但是,BD-09(Baidu, BD)是百度地图使用的地理坐标系,其在GCJ-02上多增加了一次变换,用来保护用户隐私。从百度产品中得到的坐标都是BD-09坐标系。

所以,

最终还是用了腾讯地图来确保位置的精确


以上就是我们所有的内容

(写的东西相当冗长,可能不过精简,之前一些文章其实只是要写给自己看的,但在很多开发过程中,别人的文章总能给我一些启发和思路,所以把自己遇到的问题保留下来,希望也可以给未来的自己或者其他同学一些帮助)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352

推荐阅读更多精彩内容

  • 今天我们去报告厅了 ,我不知道干什么。还有晚来的一些同学。 我们先走了让李泽宇等着他们。到了报告厅,我们不...
    张余蔚阅读 767评论 0 0
  • 早餐:核桃豆奶,西红柿鸡蛋面 中餐:豆芽水煮鱼片,米饭半碗,青梨,提子 晚餐:纯牛奶,鸡汤,西兰花炒虾仁,米饭,紫...
    饭饭家的范阅读 163评论 0 0
  • 文 | 卧猫 “气死我了,气死我了!”小青从前台跑到妙语工位旁,一脸愤怒地朝妙语抱怨。 “怎么了?”妙语抬起头来,...
    卧猫阅读 336评论 0 1