我试图弄清楚如何在城市内以及城市周围的半径范围内搜索位置。我已经有了一张有城市的桌子:
cities 表:
for (Thread t : Thread.getAllStackTraces().keySet())
{
if (t.getState() == Thread.State.TIMED_WAITING && t != Thread.currentThread())
t.interrupt();
}
for (Thread t : Thread.getAllStackTraces().keySet())
{
if (t != Thread.currentThread())
t.join();
}
我还有一张包含位置的表格。
位置表:
id: INT
name: VARCHAR(20)
lat: FLOAT
lng: FLOAT
通常城市的坐标是其中心。这没关系,因为当我搜索特定城市的位置时,我可以使用
id: INT
city_id: INT
name: VARCHAR(30)
lat: FLOAT
lng: FLOAT
表中的city_id。但是,当我在半径围绕城市进行搜索时,结果不会很准确。如果这个城市相对较小,这不会成为一个问题。然而,如果城市很大,并且搜索城市周围10公里,那么结果很可能只是城市本身。
我的问题是,如何处理这种情况,所以结果更准确?
我在想的是locations
表中存储的每个城市(涵盖城市范围)的直径。当我搜索城市周围的地方时,我会首先获取目标城市的半径(让它命名为cities
)。然后我会将它添加到搜索到的半径(让我们说cityRadius
)。然后我将执行一个查询,该查询将在searchedRadius = 10
的半径范围内搜索市中心周围的位置。
我有两个问题:
我的堆栈是:PHP 7.2,Mysql 5.7。
提前致谢!