当前位置: 首页 > 知识库问答 >
问题:

在MySQL数据库中搜索服务于输入lat/long的值

彭梓
2023-03-14

这个问题不同于常规的mysql lat/long、基于radius的数据获取

例如,我想搜索包含以下列的mysql数据库表-

ID  Items   lat       long      serving_radius(in km)

1   Item1  26.120888  85.364723    2
2   Item2  26.120888  85.364723    5
3   Item3  25.859800  85.786598    4
4   Item4  26.594900  85.504799    8

现在,如果用户具有lat/long(29.941095/77.812424),则希望知道这些项目中的哪些可以在其位置提供服务。那么我将如何使用php获取结果

共有3个答案

卫才
2023-03-14

这个问题似乎类似于MySQL——从数据库中查找半径内的点

  1. 从数据库中的serving_radiuslat/lon中查找半径。
  2. 使用函数MBR包含查找包含用户点的多边形。
    SELECT
        *
    FROM 
        items
    WHERE
        MBRContains(
            GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))'),
            GeomFromText('Point(77.812424 29.941095)')) = 1;

希望能有帮助

盖高畅
2023-03-14

“服务半径”是否已存储在您的表中?您可以做的是获取距离并检查其半径是否不足

SELECT serving_radius, 
(6371 * acos(cos(radians(" . $userLatitude . ")) * cos(radians(`latitude`)) * cos(radians(`longitude`) - radians(" . $userLongitude . ")) + sin(radians(" . $userLatitude . ")) * sin(radians(`latitude`)))) as distance 
having distance < serving_radius
汤嘉平
2023-03-14

我猜你要找的SQL是这个:

SELECT id, items, lat, long, serving_radius
FROM table 
WHERE lat = 29.941095 
AND long = 77.812424;

在PHP代码中,您应该使用DB驱动程序(我建议您使用PDO)来连接到DB并执行查询。

有很多关于如何使用PDO(创建连接、选择、插入等)的教程。

我刚刚找到了本教程,它可以帮助您:https://parzibyte.me/blog/en/2019/10/14/php-mysql-tutorial-using-pdo/

编辑:不确定您指的是如何使用那些精确的latlong值或更接近它们的值构建查询。如果是这样,你可以看看https://gis.stackexchange.com/questions/31628/find-points-within-a-distance-using-mysql

 类似资料:
  • 我试图开发一个小网站,它从数据库中按设定的半径检索结果,并将其放在地图上。我使用谷歌地图api从那里获得lat和long搜索条件,将这些传递给我的php脚本,该脚本查询数据库并返回结果集作为JSON对象。 我在使用json向php发送lat和long时遇到了一个小问题。 我的主要问题是,我搜索数据库的sql似乎是错误的,因为它只检索数据库中的前10个结果。我希望它返回搜索点半径内的前10个结果。

  • 我正在寻找创建一个数据库搜索(MySQL),使用PHP来查找电气部件的零件号,但希望搜索也能找到类似的字符 例如,搜索6SE7O90也应搜索6SE7090,搜索4I737A也应搜索4L737A,因为在某些零件标签上打印的0/O和I/L可能看起来相似。 在PHP/MySQL中实现这一点的最佳方法是什么?

  • 本文向大家介绍在MySQL数据库中快速搜索字符串?,包括了在MySQL数据库中快速搜索字符串?的使用技巧和注意事项,需要的朋友参考一下 使用FULLTEXT搜索来快速搜索字符串。让我们首先创建一个表- 这是创建全文本搜索的查询- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是在MySQL数据库中快速搜索字符串的查询。在这里,我们正在搜索字符串

  • 使用JQuery Datatable与输入和选择如下图所示:http://datatables.net/examples/api/form.html或者如果我使用自定义列渲染处理程序来生成输入和选择如何使全局表搜索工作? 如果您查看这个示例,您会注意到搜索中只包含第一列,即只读列,我可以做些什么来将其他列包含在搜索中? 如果您在“我的问题”的链接中查看示例,并在搜索中键入“Tokyo”,则返回所有

  • 问题内容: 我是使用Redis DB的新手。在阅读了一些文档并浏览了Internet上的一些示例并扫描了stackoverflow.com之后,我可以看到Redis速度非常快,可扩展性很好,但这要付出代价,我们必须考虑一下数据的处理方式在设计时访问它们,以及它们将要执行的操作。我能理解这一点,但对于使用普通的旧SQL这么简单却又缓慢地在数据中搜索感到有些困惑。我可以用KEY命令以一种方式完成此操作

  • 问题内容: 我在输入时搜索用户。但是最后它返回了每个用户。我不知道为什么会这样。好像还好 问题答案: 您正在使用。从文档中: 由返回的实例 将响应节点上具有大于startValue或等于startValue且键大于或等于childKey的值的事件。 因此请记住,如果您搜索某个用户的,则会为所有名称按字母顺序大于给定名称的用户提供。您需要设置a 以限制查询范围。 Firebase旧版文档是了解Fir