MySQL 半径搜索

Posted

技术标签:

【中文标题】MySQL 半径搜索【英文标题】:MySQL radius search 【发布时间】:2015-07-03 19:14:38 【问题描述】:

我正在制作一个带有半径搜索的应用程序,这是我从中学到的示例

https://developers.google.com/maps/articles/phpsqlsearch_v3#findnearsql

就我而言

我愿意

SELECT (3959 * acos(cos(弧度(-37.814107)) * cos(弧度(lat)) * cos(弧度(lng) - 弧度(144.96327999999994)) + sin(弧度(-37.814107)) * sin(弧度(lat)))) AS 距离;

当 lat = -37.8141070000,lng = 144.9632800000

SELECT (3959 * acos(cos(弧度(-37.814107)) * cos(弧度(-37.8141070000)) * cos(弧度(144.9632800000) - 弧度(144.96327999999994)) + sin(弧度(-37.814107)) * sin (弧度(-37.8141070000)))) AS 距离;

mysql 将距离输出为 NULL,为什么?我是不是做错了什么?

我该如何解决?对不起,我真的不擅长数学。

【问题讨论】:

我想我得到了答案,请看***.com/questions/5411836/mysql-bug-trigonometry 【参考方案1】:

基本 SQL 查询

SELECT * FROM table

您的查询中必须有一个 MySql 表,其中 lat & lng 作为字段。 即

SELECT (3959 * acos(cos(radians(-37.814107)) 
       * cos(radians(lat)) * cos(radians(lng) - radians(144.96327999999994))
        + sin(radians(-37.814107))
        * sin(radians(lat)))) AS distance FROM table;

【讨论】:

嗨大卫,我有一张桌子,有一行 lat = -37.8141070000, lng = 144.9632800000。但是mysql总是将这一行的距离输出为NULL。 但是您必须在查询中有表名。在您的两个查询中都没有数据库 谢谢大卫,我知道这一点。因为我的查询非常复杂,所以我简化了我的问题。

以上是关于MySQL 半径搜索的主要内容,如果未能解决你的问题,请参考以下文章

WordPress ACF 谷歌地图半径搜索

MySQL搜索地理位置重叠?

使用 mySQL 的 OpenStreetMap 邻近搜索

MySQL - 如何使用地理位置数据加快搜索速度?

Radius 搜索 PHP、MYSQL 和谷歌地图

半径内的html5地理位置搜索