前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微擎开发-获取用户定位,实现限制距离打卡功能

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

原创
作者头像
快乐的小白
发布2024-03-22 13:46:11
1770
发布2024-03-22 13:46:11
举报
文章被收录于专栏:微擎

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

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

代码语言:html
复制
{php echo register_jssdk();}

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

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

代码语言:php
复制
<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.获取到定位后传到后端,然后通过一个计算方法,计算获取到的定位和打卡的定位。

代码语言:php
复制
	/**
	 * 计算当前商家位置是否在范围内
	 * @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. 然后再进行个判断,判断是否小于规定的值,也就是范围。
代码语言:php
复制
if($dingwei > $meta_dingwei){
	message('您不在活动范围内,请前往活动点进行打卡!', $this->createMobileUrl('item',array('id'=>$id)), 'error');
}

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档