【发布时间】:2016-10-01 09:22:23
【问题描述】:
我有这些数据:
纬度:50.223137
经度:18.679558
现在我想在 PHP 中创建一个特殊函数,它能够计算小于 50 公里的最小纬度和经度以及最大纬度和经度。最后我想得到 4 个参数,我想在简单的 SQL 查询中使用这些参数:SELECT * FROM table WHERE lat >= [min_lat] AND lng >= [min_lng] AND lat <= [max_lat] AND lng <= [max_lng];
我知道,我只使用一个 sql 查询就可以做到这一点:latitude/longitude find nearest latitude/longitude - complex sql or complex calculation 但我的数据库中现在有 20.000.000 条记录,而且它还在增长。我还必须在我的 sql 数据库中搜索其他内容,所以我想基于 PHP 计算所有内容,然后以这种方式在 sql 中搜索:SELECT * FROM table WHERE lat >= [min_lat] AND lng >= [min_lng] AND lat <= [max_lat] AND lng <= [max_lng];,因为我认为 - 这是更快的方式。
我还发现了这个函数:https://www.geodatasource.com/developers/php,这很好,但我想以其他方式创建该函数 - 我想声明为参数:lat、lng 和距离(例如:50 公里)。最后我想得到 4 个参数 - min_lat, min_lng, max_lat, max_lng。
谁能帮我创建这个函数?
谢谢。
【问题讨论】:
-
您需要距离您的位置精确的 50 公里半径吗?
-
这就是例子。它可以是 50 公里、20 公里、10 公里、80 公里等。我想声明该参数(以及关于起点的纬度和经度)。
-
您知道 1 度在 99% 的精度下大约是 55 公里,因此您可以通过将您的公里数除以 55 来添加和减去所产生的度数,以获得您所在位置的最大和最小纬度和经度跨度>
-
55 公里 ?? @Jim Lewis 说,这是 110.5 公里:stackoverflow.com/questions/1253499/…
-
你说得对,110km 大约是 1 度,抱歉....
标签: php google-maps