博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
周围距离多少米的SQL语句
阅读量:5232 次
发布时间:2019-06-14

本文共 1354 字,大约阅读时间需要 4 分钟。

 

C#版

public static double GetDistance(double long1, double lat1, double long2, double lat2)        {            double a, b, R;            R = 6378137; //地球半径            lat1 = lat1 * Math.PI / 180.0;            lat2 = lat2 * Math.PI / 180.0;            a = lat1 - lat2;            b = (long1 - long2) * Math.PI / 180.0;            double d;            double sa2, sb2;            sa2 = Math.Sin(a / 2.0);            sb2 = Math.Sin(b / 2.0);            d = 2 * R * Math.Asin(Math.Sqrt(sa2 * sa2 + Math.Cos(lat1) * Math.Cos(lat2) * sb2 * sb2));            return d;        }

 

sql语句版

$user_lat='41.749034'; //传过来的纬度$user_lng='123.46017';//传过来的经度$store_mod=db("store"); //数据库$storelist=$store_mod->query("SELECT *,ROUND(6378.138*2*ASIN(SQRT(POW(SIN((".$user_lat."*PI()/180-【store_latitude】*PI()/180)/2),2)+COS(".$user_lat."*PI()/180)*COS(【store_latitude】*PI()/180)*POW(SIN((".$user_lng."*PI()/180-【store_longitude】*PI()/180)/2),2)))*1000) AS distance FROM store HAVING 【搜索条件如 state=1】 distance<【周围距离多少米 如 500】 ORDER BY distance ASC");SELECT *,ROUND(6378.138*2*ASIN(SQRT(POW(SIN((22.121700*PI()/180-stationinfo.lat*PI()/180)/2),2)+COS(22.121700*PI()/180)*COS(stationinfo.lat*PI()/180)*POW(SIN((99.285103*PI()/180-stationinfo.lng*PI()/180)/2),2)))*1000) AS distance FROM stationinfo  ORDER BY distance ASC

 

转载于:https://www.cnblogs.com/huangzhen22/p/11175486.html

你可能感兴趣的文章