根据地图经纬度获取打卡范围

小鱼儿 2023-07-20 12:25 17阅读 0赞

如:现在有数据表

school学校表:schoolId学校id,schoolName学校名称,is_delete删除标志;

school_location学校位置表:id自增长id,school_id学校id,latitude(decimal)纬度,longitude(decimal)经度,description具体位置描述;

现需要根据用户当前位置(经度longitude、纬度latitude)获取1000米内可以打卡的学校列表:

  1. SELECT
  2. *
  3. FROM
  4. (
  5. SELECT
  6. s.school_id AS schoolId,
  7. s.school_name AS schoolName,
  8. l.id AS locationId,
  9. l.longitude AS longitude,
  10. l.latitude AS latitude,
  11. l.description AS description,
  12. 6378137 * 2 * ASIN(
  13. SQRT(
  14. POWER(
  15. SIN(
  16. (
  17. #{latitude} * PI() / 180 - l.latitude * PI() / 180
  18. ) / 2
  19. ),
  20. 2
  21. ) + COS(
  22. #{latitude} * PI() / 180) * COS(l.latitude * PI() / 180) * POWER(
  23. SIN(
  24. (
  25. #{longitude} * PI() / 180 - l.longitude * PI() / 180
  26. ) / 2
  27. ),
  28. 2
  29. )
  30. )
  31. ) AS distance
  32. FROM
  33. school s
  34. INNER JOIN school_location l ON s.school_id = l.school_org_id
  35. WHERE
  36. s.is_delete = 0
  37. ) m
  38. WHERE
  39. m.distance<1000

发表评论

表情:
评论列表 (有 0 条评论,17人围观)

还没有评论,来说两句吧...

相关阅读