微擎开发-获取用户定位,实现限制距离打卡功能

在这里插入图片描述

1.首先本次开发是基于微擎2.0框架开发的。

2.需要认证服务号,因为是获取微信的定位

{php echo register_jssdk();}

3.将上面的代码插入到前端的html中,尽量在js前。

4.然后通过getLocation接口获取用户的定位。

<script>
     wx.getLocation({
                    type: 'wgs84',
                    success: function (res) {
                    var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
                    var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
                    var speed = res.speed; // 速度,以米/每秒计
                    var accuracy = res.accuracy; // 位置精度
                    },

     });
</script>

4.获取到定位后传到后端,然后通过一个计算方法,计算获取到的定位和打卡的定位。

	/**
	 * 计算当前商家位置是否在范围内
	 * @param 当前位置经度 $lat_a
	 * @param 计算经度 $lng_a
	 * @param 当前位置维度 $lat_b
	 * @param 计算纬度 $lng_b
	 * @author bieanju
	 * @return number 距离  */
	public function  getDistance_map($lat_a, $lng_a, $lat_b, $lng_b) {
		//R是地球半径(米)
		$R = 6366000;
		$pk = doubleval(180 / 3.1416);
		$a1 = doubleval($lat_a / $pk);
		$a2 = doubleval($lng_a / $pk);
		$b1 = doubleval($lat_b / $pk);
		$b2 = doubleval($lng_b / $pk);
		$t1 = doubleval(cos($a1) * cos($a2) * cos($b1) * cos($b2));
		$t2 = doubleval(cos($a1) * sin($a2) * cos($b1) * sin($b2));
		$t3 = doubleval(sin($a1) * sin($b1));
		$tt = doubleval(acos($t1 + $t2 + $t3));
		return round($R * $tt);
	}
  1. 然后再进行个判断,判断是否小于规定的值,也就是范围。
if($dingwei > $meta_dingwei){
	message('您不在活动范围内,请前往活动点进行打卡!', $this->createMobileUrl('item',array('id'=>$id)), 'error');
}

6.以上就是获取定位,然后计算距离的方法,计算那块是搜别人的,然后做个记录,留着以后用得到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值