我正在尝试找出如何实现在城市内和城市周围半径范围内搜索位置。我已经有一张城市的table了:
城市表: id: INT name: VARCHAR(20) lat: FLOAT lng: FLOAT
我还有一张有位置的table。
位置表: id: INT city_id: INT name: VARCHAR(30) lat: FLOAT lng: FLOAT
通常城市的坐标是以城市为中心的。这没关系,因为当我搜索特定城市的位置时,我可以使用 locations
table。然而,当我在城市周围的半径范围内搜索时,结果就不太准确了。如果城市相对较小,这不会是一个问题。然而,如果城市很大,搜索范围是城市周围10公里,那么结果很可能只针对城市本身。
我的问题是,如何处理这种情况,让结果更准确?
我在想的是,每个城市的直径(包括城市的领土)都存储在 cities
table。当我搜索城市周围的地方时,我会首先选择半径(让我们来命名它) cityRadius
)目标城市。然后我将它添加到搜索的半径中(假设 searchedRadius = 10
). 然后我会执行一个查询,搜索城市中心周围的位置,在 cityRadius + searchedRadius
. 我有两个问题:
我找不到这种类型的信息(半径覆盖城市的领土,特别是德国的城市)。
感觉有点不舒服。我想有更好的办法,但我找不到。
我的堆栈是:php7.2,mysql 5.7。
提前谢谢!
暂无答案!
目前还没有任何答案,快来回答吧!