关于根据距离列表排序sql

news/2025/10/10 16:15:47/文章来源:https://www.cnblogs.com/cx1992/p/19133286
//第一种  根据经纬度排序       $map = "1=1 ";if ($loadCode && $unloadCode) {$map .= " AND load_city_id = $loadCode and unload_city_id = $unloadCode";} elseif($loadCode) {$map .= " AND load_city_id = $loadCode";} elseif($unloadCode) {$map .= " AND unload_city_id = $unloadCode";}if ($status > 1) {$map .= " AND driver_id = $driverId AND status = $status";} else {$map .= " AND pay_type IS NOT NULL";if($ismy) {$map .= " AND driver_id = $driverId";} else {$map .= " AND status = 1";  }}$virtual_open = config('site.virtual_open');if($virtual_open) {$map .= " AND is_show = 1";} else {$map .= " AND is_real = 1";}$sql = "SELECT *,ROUND(6378.138 * 2 * ASIN(SQRT(POW(SIN(({$lat} * PI() / 180 - load_lat * PI() / 180) / 2), 2) + COS({$lat} * PI() / 180) * COS(load_lat * PI() / 180) * POW(SIN(({$lng} * PI() / 180 - load_lng * PI() / 180) / 2), 2))) * 1000) AS distance FROM fa_order WHERE $map ORDER BY distance ASC LIMIT ".$start.",".$pagesize;$list = Db::query($sql);        


//第二种  附近商家public function getStoreByDiscount(){$lat = $this->request->param("lat");$lng = $this->request->param("lng");$coord = get_coord_by_lat_lng($lat,$lng,5);$list = $this->model->field("id,name,logo_image,telephone,location_x,location_y")->where('location_x', '>=', $coord['right-bottom']['lat'])->where('location_x', '<=', $coord['left-top']['lat'])->where('location_y', '>=', $coord['left-top']['lng'])->where('location_y', '<=', $coord['right-bottom']['lng'])->select();$store = [];foreach($list as $key => $val) {$list[$key]["distance"] = getDistance($lat,$lng,$val["location_x"],$val["location_y"]);}$distance = array_column($list,'distance');array_multisort($distance,SORT_ASC,$list);$this->success("success", $list);}

/*** 计算两组经纬度坐标 之间的距离* params :lat1 纬度1; lng1 经度1; lat2 纬度2; lng2 经度2; len_type (1:m or 2:km);* return m or km*/
function getDistance($lat1, $lng1, $lat2, $lng2, $len_type = 1, $decimal = 2)
{$pi = 3.1415926000000001;$er = 6371;$radLat1 = $lat1 * $pi / 180;$radLat2 = $lat2 * $pi / 180;$a = $radLat1 - $radLat2;$b = $lng1 * $pi / 180 - $lng2 * $pi / 180;$s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2)));$s = $s * $er;$s = round($s * 1000);if (1 < $len_type) {$s /= 1000;}return round($s, $decimal);
}/*根据当前定位获取附近距离的范围*/
function get_coord_by_lat_lng($lat, $lng, $distance = 2)
{// 定义地球的半径define('EARTH_RADIUS', 6371);$new_lng =  2 * asin(sin($distance / (2 * EARTH_RADIUS)) / cos(deg2rad($lat)));$new_lng = rad2deg($new_lng);$new_lat = $distance / EARTH_RADIUS;$new_lat = rad2deg($new_lat);return ['left-top' => ['lat' => $lat + $new_lat,'lng' => $lng-$new_lng],'right-top' => ['lat' => $lat + $new_lat, 'lng' => $lng + $new_lng],'left-bottom' => ['lat' => $lat - $new_lat, 'lng' => $lng - $new_lng],'right-bottom' => ['lat' => $lat - $new_lat, 'lng' => $lng + $new_lng]];
}
 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/934213.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年高适配铝型材厂家推荐:深圳市方达铝业领衔,3家企业覆盖多场景

随着科技的进步与工业的发展,铝型材作为一种轻质、高强度且耐腐蚀的材料,广泛应用于 3C 数码、智能家居、工业设备等多个领域。然而,市场上铝型材厂家众多,产品质量与服务水平参差不齐,给消费者的选择带来了困扰。…

注册c模块到lua中使用

#define REGISTER_CUSTOM_LIBRARY(name, lua_c_fn) \ int lua_c_fn(lua_State*); \ luaL_requiref(L, name, lua_c_fn, 0); \ lua_pop(L, 1) /* remove lib */ //注册c模块void open_custom_libs(lua_State* …

S3Bucket安全评分与合规状态逻辑修复:全面提升云存储安全评估准确性 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

DNA权威书籍

《基因XII》- 本杰明卢因分子生物学“圣经”。 这是全球最经典、最权威的分子生物学教材,每隔几年就会更新一版。内容极其全面、系统,从DNA结构、复制、转录、翻译到基因调控、基因组学、新技术都有详尽的阐述。插图…

220V转5V500mA非隔离电源芯片WT5105

220V转5V500mA非隔离电源芯片WT5105 WT5105 是一款集成非隔离式电源控制器,可将 220V 电压转换为 5V、500mA 的稳定输出,为低功率设备提供稳定、高效的供电解决方案。以下是其相关介绍:核心参数:输出电压为 5V,输…

linux基础-find查找

linux基础-find查找 1.认识 实时查找工具,通过便利指定路径完成文件的查找工作特点:(1)精确查找(2)实时查找(3)查找速度慢(4)可能之搜索用户具备读取和执行权限的目录语法 :   find [OPTION]... [查找路径…

220V转12V电机水泵供电驱动WT5105

220V转12V电机水泵供电驱动WT5105 WT5105是一款AC-DC开关电源驱动芯片,适用于220V转12V的电机水泵应用。以下是详细介绍:基本参数输入电压:85V~265V AC(覆盖220V市电)输出电压:可调,支持12V输出输出功率:5V-15…

ansys安装时无法修改安装路径--灰色无法修改

ansys安装时无法修改安装路径,是因为有ansys程序运行、曾经安装没有卸载干净 1、卸载 2、清除注册表(工具) 3、参考官方方法 Uninstalling the Ansys license manager – Ansys Optics以下是官网卸载方法 Uninstall…

Qwen2.5-VL技术报告

原文:https://mp.weixin.qq.com/s/IbfY50w_w27WO3ZzRSsyDg 全文摘要Qwen2.5-VL模型在视觉语言系列中具有显著的基础能力和创新功能上的提升。通过增强的视觉识别、精确的对象定位、稳健的文档解析和长视频理解等能力,…

智能提取表格从pdf, 图片 到 excel, csv

智能提取表格从pdf, 图片 到 excel, csvhttps://www.textin.com/

攸米知识付费小程序管理系统:一站式知识变现解决方案

在数字化浪潮推动下,知识付费成为教育、培训及内容创作领域的重要变现模式。攸米知识付费小程序系统依托微擎生态,为用户提供微信小程序端知识付费平台搭建服务,涵盖课程管理、会员体系、营销工具、订单处理等全流程…

citus设置密码

给citus集权设置密码 用户名: luozhengkang 密码:xiaoluo 数据库:mdmaster_prod-- 创建用户 CREATE USER luozhengkang WITH PASSWORD xiaoluo NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN CONNECTION LIMIT…

实践与认识及其发展规律

摆脱贫困首要并不是摆脱物质的贫困,而是摆脱意识和思路的贫困 告诉我们 实践主体的能力即包括自然能力,也包括精神能力 实践主体:指具有一定的主体能力,从事现实社会实践活动的人 实践主体的能力:包括自然能力和精…

2025 年最新推荐氨糖厂家排行榜:四期临床验证 + 蓝帽认证,帮你选出优质氨糖软骨素 / 氨糖钙 / 氨糖钙片厂家

当前,人口老龄化加剧使中老年群体对骨健康重视度飙升,氨糖作为关节健康守护关键成分,市场需求急剧增加。然而,氨糖市场乱象丛生,大量品牌缺乏核心研发能力,产品配方同质化严重,无法满足不同人群个性化骨健康需求…

完整教程:阿里云瓴羊发布企业级AI智能体服务平台AgentOne,成就AI时代的“超级公司”

完整教程:阿里云瓴羊发布企业级AI智能体服务平台AgentOne,成就AI时代的“超级公司”pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; …

利用MCP Server革新软件测试:更智能、更高效的自动化

在当今快速迭代的软件开发环境中,传统测试方法正面临前所未有的挑战。本文将介绍如何借助MCP Server这一创新技术,彻底改变软件测试的工作流程,实现更智能、更高效的自动化测试。 为什么测试需要MCP Server? 传统自…

数据结构-设计一个算法删除单链表L(有头节点)中的最小结点。

数据结构 设计一个算法删除单链表L(有头节点)中的最小结点。 /**************************************************************************** * @name LkListDelMin* @brief 删除单链表中的最小结点* @pa…

可视化图解算法63:单词搜索

对于数据结构笔试面试算法,我们总结了一套【可视化+图解】方法,依据此方法来解决相关问题,算法变得易于理解,写出来的代码可读性高也不容易出错。LeetCode 79. 单词搜索1. 题目 描述 给定一个 m x n 二维字符网格 …

云原生docker离线二进制安装 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …