小程序实现人员位置的自动到达

1、获取自动到达开关

2、人员位置持续实时上传(获取人员当前位置)

3、获取要到达的指定位置的坐标点(可通过sdk地址解析)

4、比较两个坐标点之间的距离(sdk的距离计算)

5、当距离小于指定范围后,可调用到达接口或进行到达后的相关操作

Tips:wx.startLocationUpdateBackground()方法需注意以下:

  • 安卓微信7.0.6版本,iOS 7.0.5版本起支持该接口
  • 小程序的基础库 2.8.0 开始支持,低版本需做兼容处理
  • 需在app.json中配置requiredBackgroundModes: ['location']后使用

 

场景实例:

设置页面中有个自动达到的开关按钮,开启后需要实现自动到达功能。新工单中可有多条单子,一旦点击接单后,即可进行判断,当人员到达指定位置后,该条新工单的状态即变为已到达

1)获取自动到达开关(可在进入页面和watch监听中调用一下方法)

retrievalSwictch(){
        //获取自动到达开关
        wx.getStorage({
          key:'switch',
          success: res =>{
            if(res.data==true){
              //若到达中有单子,则获取人员位置,否则关闭位置上传
              let that = this;
              if (that.waitArriveListLength > 0) {
                wx.getSetting({
                  success: (res) => {
                    if (!res.authSetting['scope.userLocation']) {
                      that.openConfirm()
                    } else {
                      if (res.authSetting['scope.userLocationBackground'] == true) {
                        that.getSelfLocation();
                      } else {
                        //如果关闭,则清缓存,关闭定时上传
                        this.clearLocaUpdate();
                      }
                    }
                  }
                })
              } else {
                this.clearLocaUpdate();
              }
            }else{
              this.clearLocaUpdate();
            }
          }
        });
      }

2)人员位置持续实时上传(获取人员当前位置)

tips:先确认用户是否打开定位权限

openConfirm() {
        let that = this;
        wx.showModal({
          content: '自动到达功的实现需要您打开定位权限,是否去设置打开?',
          confirmText: "确认",
          cancelText: "取消",
          success: function(res) {
            //点击“确认”时打开设置页面
            if (res.confirm) {
              versionCompare.compareV('1.1.0', function() {
                wx.openSetting({
                  success: (res) => {
                    console.log(res.authSetting);
                    if (res.authSetting['scope.userLocationBackground'] == true) {
                      that.getSelfLocation();
                    }
                  }
                })
              })
            } else {
              console.log('用户点击取消')
            }
          }
        });
      }

//获取人员当前人员位置
      getSelfLocation() {
        let that = this;

        versionCompare.compareV('2.8.0', function() {
          wx.startLocationUpdateBackground({
            //开始
            success: (res) => {
              wx.onLocationChange((data) => {
                //获取当前时间
                var currentTime = new Date().getTime();
                //获取上次保存的位置信息
                var oldLocation = wx.getStorageSync('oldLocation');
                //获取上次执行的时间
                var oldTime = wx.getStorageSync('oldTime');
                //将人员位置的经纬度拼接
                var newLocation = data.latitude + "" + data.longitude;
                //判断一下当前的位置是否和上次位置不一致
                if (oldLocation != newLocation) {
                  //缓存当前最新位置
                  wx.setStorageSync('oldLocation', newLocation);
                  //缓存当前执行的时间
                  wx.setStorageSync('oldTime', currentTime);
                  //如果本次执行时间距离上次时间超过5s,将位置信息上传后台
                  if (currentTime - oldTime >= 5000) {
                    that.userLocate();    //调用接口,上传位置信息
                    that.currlongitude = data.longitude;
                    that.Currlatitude = data.latitude;
                    that.autoArrive();     //调用距离计算方法
                  }
                }
              });
            },
            fail: (err) => {
              console.log("位置获取失败:", err)
            }
          })

        })

      }

3、获取要到达的指定位置的坐标点(可通过sdk地址解析)

参考:https://lbs.qq.com/miniProgram/jsSdk/jsSdkGuide/methodGeocoder

4、比较两个坐标点之间的距离(sdk的距离计算)

 // 自动到达
      autoArrive() {
        var _this = this;
        for (var i = 0; i < _this.waitArriveList.length; i++) {
          let item = _this.waitArriveList[i]
          if (item.procCode == "02") {

            //调用距离计算接口
            qqmapsdk.calculateDistance({
              //mode: 'driving',//可选值:'driving'(驾车)、'walking'(步行),不填默认:'walking',可不填
              //from参数不填默认当前地址
              //获取表单提交的经纬度并设置from和to参数(示例为string格式)
              // from: e.detail.value.start || '', //若起点有数据则采用起点坐标,若为空默认当前地址
              // to: e.detail.value.dest, //终点坐标
              form: _this.Currlatitude.toString() + "," + _this.currlongitude.toString(),
              to: item.latitude.toString() + "," + item.longitude.toString(),
              success: function(res) { //成功后的回调
                console.log("回调", res)
                var res = res.result;
                var dis = [];
                for (var i = 0; i < res.elements.length; i++) {
                  dis.push(res.elements[i].distance); //将返回数据存入dis数组,
                }
                _this.distance = dis //设置并更新distance数据
                if (_this.distance <= 500) {
                  console.log(_this.distance[0], "到达工单位置")
                  //到达对应位置后,调用到达接口
                  _this.handarrived(item)
                } else {
                  console.log(_this.distance[0], "尚未到达")
                }
                console.log("成功", _this.distance);
              },
              fail: function(error) {
                console.error(error);
              },
              complete: function(res) {
                console.log(res);
              }
            });
          }
        }
      }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSM项目小程序weixin077停车场微信小程序的设计与实现Ssmpf.zip是一个基于Spring、Spring MVC和MyBatis(SSM)框架开发的微信小程序,专为现代化停车场管理和车辆停放服务设计的。该小程序结合了微信的用户便捷性和SSM框架的技术优势,提供了一个高效、智能的停车解决方案。 以下是该小程序的主要功能和特点: 1. **车位实时监控**:通过传感器或摄像头等硬件设备,系统能够实时显示停车场内的车位使用情况,方便驾驶员快速找到空闲车位。 2. **在线预订车位**:用户可以通过小程序提前预订车位,确保到达时有确定的停车位可用。 3. **自动计费与支付**:系统根据停车时间自动计费,用户可通过微信支付完成交费,无需现场排队等待。 4. **导航引领**:小程序内置导航功能,可以引导用户从入口直达预定的车位。 5. **会员管理**:提供会员注册系统,为常客提供积分奖励、优惠活动等,增强用户黏性。 6. **车辆进出管理**:通过车牌识别技术记录车辆进出时间,自动化管理车辆的入场和出场。 7. **异常情况处理**:当停车场内发生异常情况,如车辆长时间未移动,系统会及时通知管理人员进行处理。 8. **数据统计分析**:后台管理系统能够自动统计各项数据,如车流量、收入统计等,帮助停车场管理者优化运营策略。 整个系统以微信小程序为前端,便于车主随时随地访问和使用;后端采用SSM框架,确保了数据处理的效率和稳定性。它不仅改善了停车场的运营效率,还提供了一种现代化、智能化的停车体验,有利于提升用户的满意度和停车场的经济效益。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值