PHP+Mysql通过计算经纬度查询附近商家

直接贴方法:

/**
 * @param $model [表名称]
 * @param $lat [用户纬度]
 * @param $lng [用户经度]
 * @param string $where
 * @param int $distance [用户周边范围距离,单位:千米]
 * @param string $latSql [商家的纬度在数据表中的字段名]
 * @param string $lngSql [商家的经度在数据表中的字段名]
 * @return mixed[返回一个数组,包含了查询到的商家信息]
 * 查询附近商家信息
 */
protected static function getLatAndLng($model, $lat, $lng, $where = '', $distance = 5, $latSql = 'merchant_latitude_lat', $lngSql = 'merchant_latitude_lng')
{

    $sql = "SELECT *, ROUND(6378.138*2*ASIN(SQRT(POW(SIN(($lat*PI()/180-$latSql*PI()/180)/2),2)+COS($lat*PI()/180)*COS($latSql*PI()/180)*POW(SIN(($lng*PI()/180-$lngSql*PI()/180)/2),2)))) AS juli  
FROM $model where $where HAVING juli <= $distance";
    $query = Db::query($sql);
    return $query;
}

因为我这里使用的是tp框架所以,直接使用的Db类的query方法

调用方法:

$business = self::getLatAndLng('d_user', $slat, $slng, 'is_merchant =2 AND status = 2');


打赏

本文 暂无 评论

回复给

Top