小程序云开发根据用户和商家距离进行排序和分页

我想按照用户和商家的距离由近到远进行排序渲染,用skpi()和limit()分页查询的话好像逻辑行不通,因为无法遍历整个表。请问怎么才能处理呢。
总共2个需求:
需求(1):全表由近到远进行排序
需求(2):全部排序后再根据上拉刷新进行分页加载

img

img

如果这个需求是后端让你做的,那是在“锻炼”你。

通常实现步骤为:

  1. 前端 获取 用户的经纬度,并在调用后端分页查询接口时作为参数传入;
  2. 后端 解析入参 经纬度值,并根据约定转换为统一坐标系(如:火星坐标系);
  3. 计算 用户经纬度坐标、店铺经纬度 的直线距离(可看作为圆半径),并对距离进行过滤(如:只显示 100 公里内的店铺),排序后的返回 分页数据给前端;
  4. 前端在地图上打点 或 以列表方式显示。

以上供参考


根据经纬度计算两点之间的直线距离(算法)_春秋战国程序猿的博客-CSDN博客_经纬度计算直线距离 Talk is cheap, show me the code.import lombok.extern.slf4j.Slf4j;/** * 根据经纬度,计算2点之间的直线距离。 * 距离较近的场景,可以使用,误差较小。 * 距离较远的场景,要考虑具体的业务场景。 * 因为这个只是计算直线距离,和实际的路线不同,所以要结合场景,看是否适用 */@Slf4jpub... https://blog.csdn.net/reggergdsg/article/details/103719079

当你说渲染, 你是要用不同的颜色渲染?
按照距离排序不行么?

距离排序和分页要在后端查询数据部分实现,前端只需要负责渲染就好了
思路如下,如果你商家有存储经纬度,那么你前端获取用户的经纬度,传递给后端,后端通过的sql语句查询进行排序,分页就可以把数据传回给前端渲染了