php - 如何根据纬度和经度应用过滤器?

标签 php mysql

我想根据纬度和经度应用过滤器。有一个表,其中包含列 id、标题、纬度、经度 (MySql),我想获得 4 公里范围内的结果,因为我提供了当前位置的纬度和经度。

SELECT * FROM ads WHERE (latitude = 26.85005 AND longitude = 26.85393) AND (longitude = 80.94964 AND longitude = 80.96595) HAVING acos(sin(1.3963) * sin(latitude) + cos(1.3963) * cos(latitude) * cos(longitude - (-0.6981))) <= 0.1570 

最佳答案

是的,这是可能的。

SELECT a.title,
   111.111 *
    DEGREES(ACOS(LEAST(COS(RADIANS(a.Latitude))
         * COS(RADIANS(b.Latitude))
         * COS(RADIANS(a.Longitude - b.Longitude))
         + SIN(RADIANS(a.Latitude))
         * SIN(RADIANS(b.Latitude)), 1.0))) AS distance_in_km
  FROM table AS a
  JOIN table AS b ON a.id <> b.id
  HAVING distance_in_km <= 4

在这里,HAVING distance_in_km <= 4 4是KM范围。

关于php - 如何根据纬度和经度应用过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53943235/

相关文章:

php - Zend框架模块库

php - 在 WordPress 中的作者存档页面上获取作者姓名

php-fpm 不创建 .sock 文件

php - 在数据库中存储关键字的好方法是什么?

MySQL 带有 CASE 的复杂 WHEN 过滤器

php - 在 pg_query() 问题中使用 AND 语句

PHP - 嵌套列表分成偶数列(修复和更新)

mysql - 按 Count(field) 排序,但所有行都在答案中

MYSQL Datetime as varchar 以及如何仅显示年份

php - 将文本转换为评论