我正在开发一个基于地理位置的个人项目,我想根据用户的纬度&获取供应商的经度值。而且这笔交易是供应商具有可变的供应半径,很少有供应商只在其半径5公里范围内供应,而有些供应商可能供应整个城市。将城市拆分成区域,这是个好主意吗?
一般的做法是为每个供应商计算供应商&用户之间的距离。如果它小于或等于供应半径,则在结果中显示该供应商。
但是,这可能会很慢,所以我想我的城市分成四个区(接从谷歌地图,有四种纬度经度&值,东北西部南部)&每当添加一个供应商,我会做数学&分配它们可以在数据库中提供的区域。现在,无论何时我获得用户的纬度&经度,我都会确定区域&获取可供应给该区域的供应商,然后将距离计算&过滤掉。通过这种方式,我可以根据供应商数量而不是整个列表进行计算。
但这是一个好主意还是我可以做得更好?
您使用的数据库是?这是空间索引擅长的,因为它们是二维的(使用R-Trees),并且可以在距离类型查询中包含,包含,相交。 –
我打算使用postgres –
在这种情况下,只需使用空间索引,然后使用ST_DWithin(geom1,geom2,distance)类型的查询,请参阅http://postgis.net/docs/ST_DWithin.html –