当前位置: 首页 > 面试题库 >

使用MySQL空间数据获取Google Maps上的最近地点

鞠侯林
2023-03-14
问题内容

我有一个数据库,其中包含每个商店的经度和纬度。因此,根据我输入的当前(纬度,经度)位置,我想从半径1公里,5公里等范围内的物品中获取物品清单?

算法应该是什么?我需要用于算法本身的PHP代码。


问题答案:

您只需要使用以下查询。

例如,您输入的经度和纬度分别为37和-122(以度为单位)。您想搜索距当前给定纬度和经度25英里以内的用户

SELECT item1, item2, 
    ( 3959 * acos( cos( radians(37) ) 
                   * cos( radians( lat ) ) 
                   * cos( radians( lng ) 
                       - radians(-122) ) 
                   + sin( radians(37) ) 
                   * sin( radians( lat ) ) 
                 )
   ) AS distance 
FROM geocodeTable 
HAVING distance < 25 
ORDER BY distance LIMIT 0 , 20;

如果要以kms为单位搜索距离,则在上面的查询中将3959替换为6371。

您也可以这样做:

  1. 选择所有经度和纬度

  2. 然后计算每个记录的距离。

  3. 可以使用多个重定向来完成上述过程。

为了优化查询,您可以使用存储过程。

而这也可以帮助你。



 类似资料:
  • 问题内容: 我有以下架构。 表票 在这里,我想获取最近7天中每天的每种援助的计数,在没有任何援助票的日期为“ 0”。时间戳是unix时间戳。 任何帮助都将受到高度赞赏。 问题答案: MySQL没有递归功能,因此您可以使用NUMBERS表技巧- 创建仅包含递增数字的表-使用auto_increment可以轻松做到: CREATE TABLE . ( int(10) unsigned NOT NULL

  • 问题内容: 我需要从MySQL表中获取与当前日期最接近的日期。 这是我的桌子: 因此,如果查询今天运行,它将返回 任何帮助深表感谢。谢谢 问题答案:

  • 这是正确的工作,但它绘制了许多标记的坐标小于600米的用户的位置。我想要的是只在折线的最近点画一个标记。某种程度上评估来自用户的<600的所有coord,然后选择最接近的。感谢任何帮助。

  • 我引用了irbanana关于支持PostGIS的空间数据类型的回答。我正在使用MySQL,并试图为自定义数据类型实现EWKBGeomPoint。 我的Gorm模型: 据我所知,MySQL支持这样的插入: 或 如果我使用自己的来满足的界面: 包括在内的整个值在Gorm的单引号中引用,因此它不起作用: 我如何让它工作? 编辑1: 我追踪Gorm代码,最终得到了的函数。在它内部检查且为真,则它进入调用,

  • 问题内容: 我正在使用当前系统时间在表中插入数据,例如 。因此,在获取数据时,我仅需要获取最后3个小时的数据。 以下链接对我没有帮助。因为此链接使用的是我没有的特定日期格式。 从SQLite获取根据过去小时的数据 这是我的查询,但似乎无法正常工作。 插入时时间戳只不过是当前系统时间。 请给我任何参考或提示。 问题答案: 您可以使用以下方法获取3小时的时间戳记 然后,您可以传递给查询。 或者您可以在

  • 我必须将这些详细信息显示在gridview中,如Tempname,作为下拉列表中唯一的和相关的日期时间,以及标签中最后一次按名称运行。无法上传表格图片,因为我没有足够的声誉。 但是我无法在标签中获得Runby名称。怎么显示?下面是我的存储过程