我的网站上有一个本地企业数据库。
本质上,我需要添加一个功能,用户可以在其中输入他们的地址和一个“最大距离”过滤器,并且只有在距他们返回的地址的最大距离内的结果。
哪个库/程序/api/具有我需要的功能?
我研究了 google maps api,但这是不可行的,因为它们对距离矩阵计算的配额非常严格,每天 2500 个元素。
我的网站上有一个本地企业数据库。
本质上,我需要添加一个功能,用户可以在其中输入他们的地址和一个“最大距离”过滤器,并且只有在距他们返回的地址的最大距离内的结果。
哪个库/程序/api/具有我需要的功能?
我研究了 google maps api,但这是不可行的,因为它们对距离矩阵计算的配额非常严格,每天 2500 个元素。
您需要使用数据库的“空间”功能。如果您的数据库服务器不支持它,请尝试为它找到一个“空间”插件。我不知道是否可以使用 mySql。使用 SQL Server 和 PostGIS。
例如,如果您的数据库是 SQL Server 2008:
在地址表中添加一个“地理”字段,并添加一个带有每个本地企业的地理坐标(纬度、经度)的点:
INSERT INTO @addressTable (GeographyColumn) VALUES (geography:STGeomFromText('POINT(longitude,latitude)' , 4326))
(值 4326 表示 WGS84 坐标系(由您的 GPS 使用))
然后在查询时使用客户端的坐标创建一个对象:
DECLARE @client geography
SET @client = geography::STPointFromText('POINT (longitude, latitude)', 4326)
SELECT *
FROM addressTable
ORDER BY Location.STDistance(@client)
您可以获得两个地址的 latLong(使用 google maps api 上的 geoCoding),然后您可以将它们与 mysql 查询进行比较。
查看此Google 搜索页面以获取有关如何在指定距离内或距离查找中点的 Stack Exchange 问题列表。