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);
}
if($dingwei > $meta_dingwei){
message('您不在活动范围内,请前往活动点进行打卡!', $this->createMobileUrl('item',array('id'=>$id)), 'error');
}
6.以上就是获取定位,然后计算距离的方法,计算那块是搜别人的,然后做个记录,留着以后用得到。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。