微信小程序附近人

代码很简单,需要前端不断的传入经纬度并且更新数据库用户表里的经纬度字段,然后重数据表中提取所有用户信息,在获取自身的经纬度,进行排序就可以了。

<?php
//自己的经纬度,对方的经纬度 ,返回单位 米 
function getdistance($lng1, $lat1, $lng2, $lat2) {
    $radLat1 = deg2rad($lat1);
    $radLat2 = deg2rad($lat2);
    $radLng1 = deg2rad($lng1);
    $radLng2 = deg2rad($lng2);
    $a = $radLat1 - $radLat2;
    $b = $radLng1 - $radLng2;
    $s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2))) * 6370.996 * 1000;
    return $s;
}
//模拟数据库查找出的数据  j:经度 w:纬度
$array=[]; 
array_push($array,[
'j'=>36.6675927719,
'w'=>98.4400749207,
's'=>1
]);
array_push($array,[
'j'=>36.6708284639,
'w'=>98.4741497040,
's'=>2
]);
array_push($array,[
'j'=>36.6711038356,
'w'=>98.4590435028,
's'=>3
]);
//自己的经纬度
$j=36.6684189189;
$w=98.4375000000;
//上述数组正确的顺序 s: 1 3 2
function s($j,$w,&$array){
$len=count($array);
    for($i=1;$i<$len; $i++) {
        $tmp = $array[$i];
        for($j=$i-1;$j>=0;$j--) {
            if(getdistance($j,$w,$tmp['j'],$tmp['w'])<getdistance($j,$w,$array[$j]['j'],$array[$j]['w'])) {
                $array[$j+1] = $array[$j];
                $array[$j] = $tmp;
            } else {
                break;
            }
        }
    }
    return $array;
}
var_dump(s($j,$w,$array));



微信小程序附近人


本站如无特别说明即为原创,转而告知:(http://iwonmo.com/archives/1541.html)

标签: php附近人

添加新评论