Php 搜索城市内及其周围半径内的地方
我试图找出如何在城市内和城市周围的半径范围内搜索位置。我已经有了一张关于城市的表格: 城市表:Php 搜索城市内及其周围半径内的地方,php,mysql,geolocation,gis,distance,Php,Mysql,Geolocation,Gis,Distance,我试图找出如何在城市内和城市周围的半径范围内搜索位置。我已经有了一张关于城市的表格: 城市表: id:INT 姓名:VARCHAR(20) lat:浮动 液化天然气:浮子 我还有一张有位置的桌子 位置表: id:INT 城市标识:INT 姓名:VARCHAR(30) lat:浮动 液化天然气:浮子 通常,城市的坐标表示其中心。这没关系,因为当我搜索特定城市的位置时,我可以使用位置表中的城市id。然而,当我在城市周围半径范围内搜索时,结果不会非常准确。如果这个城市相对较小,这就不会成为问题
id:INT
姓名:VARCHAR(20)
lat:浮动
液化天然气:浮子
我还有一张有位置的桌子
位置表:
id:INT
城市标识:INT
姓名:VARCHAR(30)
lat:浮动
液化天然气:浮子
通常,城市的坐标表示其中心。这没关系,因为当我搜索特定城市的位置时,我可以使用位置
表中的城市id。然而,当我在城市周围半径范围内搜索时,结果不会非常准确。如果这个城市相对较小,这就不会成为问题。但是,如果城市很大,搜索范围是城市周围10公里,那么结果很可能只针对城市本身
我的问题是,如何处理这种情况,以便结果更准确
我想的是在城市
表中存储每个城市的直径(覆盖城市的领土)。当我搜索城市周围的地方时,我会首先取目标城市的半径(我们称之为cityRadius
)。然后我将它添加到搜索半径中(比如说searchedRadius=10
)。然后我会执行一个查询,搜索市中心周围cityRadius+searchedRadius
半径范围内的位置。
我对此有两个问题:
提前谢谢 一,。使用
点
数据类型和空间
索引。2.获取将城市边界定义为多边形的地图数据,并将其存储为多边形
类型。3.使用GIS功能@Sammitch谢谢,我已经读过了,多边形如何帮助我在半径范围内搜索?你可以在表示城市边界的多边形内搜索,也可以在距离多边形X距离处搜索点,或者最基本的是能够使用空间索引和GIS功能来更有效地进行半径搜索。@Sammitch I肯定会使用空间索引和GIS功能。但是,我在理解如何在多边形周围执行半径搜索时遇到问题?您可以让用户设置任意点[通过位置搜索、邮政编码查找或单击地图],并指定半径和/或其他条件。我可以想象,无论使用何种方法,这将返回更相关的结果。