zoukankan      html  css  js  c++  java
  • thinkphp根据经纬度计算距离

                $field = 'ACOS(SIN(('.$addr["lat"].' * 3.1415) / 180 ) *SIN((a.lat * 3.1415) / 180 ) +COS(('.$addr["lat"].' * 3.1415) / 180 )
                    * COS((a.lat * 3.1415) / 180 ) *COS(('.$addr["lng"].' * 3.1415) / 180 - (a.lng * 3.1415) / 180 ) ) * 6380 as distance';
                $dot=Db::name('dot')
                    ->alias('a')
                    ->field($field.",dot_store_name,dot_door_photo,id,business_status,service_distance,xysm")
                    ->where($where)
                    ->having( "distance<=service_distance")
                    ->order("distance asc")
    //                ->page($page,$limit)
                    ->select();
    thinkphp 5.1 
     mysql 5.7版本以上
     https://dev.mysql.com/doc/refman/5.7/en/spatial-convenience-functions.html  
     
     
    $lists = appcarsmodelWash::fieldRaw("round(st_distance_sphere(point(".$data["longitude"].",".$data["latitude"]."),point(`longitude`,`latitude`))) distance ")
    ->where("status",1)
    ->orderRaw($order .",is_recommend desc")
    ->paginate();
     
    原生sql
    select shop.* 
    from
    (
    select * ,round(st_distance_sphere(point(120.012484,30.298926),point(`longitude`,`latitude`))) dis
     from test111.store 
    having dis < 5000
     order by dis limit 100000 ) shop
    group by shop.item_id
    order by dis
    limit 10
  • 相关阅读:
    在C#中如何使用资源的方法
    C#调用windows API的一些方法
    Uml学习-类图简介
    Uml学习-用例建模简介
    sqlserver中DATE类型的数据转化 CONVERT
    mysql database和schema区别
    nginx buffer
    django pk 和id用法
    sed正则
    kong 插件开发分析
  • 原文地址:https://www.cnblogs.com/zlf2000/p/12930372.html
Copyright © 2011-2022 走看看