搜索城市内的地点及其周围的半径

时间:2018-05-29 20:46:41

标签: php mysql geolocation gis distance

我试图弄清楚如何在城市内以及城市周围的半径范围内搜索位置。我已经有了一张有城市的桌子:

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的半径范围内搜索市中心周围的位置。 我有两个问题:

  1. 我找不到那种类型的信息(半径覆盖城市的范围,特别是德国的城市)。
  2. 感觉有点hacky。我认为有更好的方法可以做到这一点,但我发现它有问题。
  3. 我的堆栈是:PHP 7.2,Mysql 5.7。

    提前致谢!

0 个答案:

没有答案