1

我正在寻找一种使用 Rails 的方法来搜索餐厅的送货范围。

例如,我有一个 Restaurant 模型,它存储了一个位置和愿意旅行的里程。

该网站的访问者在搜索字段中提供他们的邮政编码,如果他们的邮政编码在餐厅的送货范围内,则该餐厅将作为搜索结果返回。

我目前正在使用地理编码器 gem,它似乎没有办法保存给定点周围的范围或半径。我可以搜索“我的搜索位置 5 英里范围内的餐馆”,但不能搜索“送货范围包括我的访客搜索词的餐馆”。

我是一个 n00b,所以任何涉及 SQL/另一种语言的东西都可能不可行。我希望有某种逻辑破解......比如在我的每家餐馆周围循环,看看 .nearby 结果是否包括我的访客的搜索邮政编码。

另外,如果之前有人问过这个问题,我们深表歉意。我没有看到任何特定于 Ruby on Rails 的内容。

4

1 回答 1

0

如果您只使用 zip_codes,则可以有一个距离表来映射两个给定邮政编码之间的距离。它本身就像一个多对多表。ID 可以是邮政编码,您可以使用类似的方法。

def distance_to(zip_code)
  # Find row where two zip_codes are defined and the saved distance
end

但我不知道这是否是您一定要保存在数据中的东西。出于几个原因,一个是某人居住的邮政编码区域不同,因此该距离不一致。最后,您已经可以使用很多东西来做到这一点。

然后,您可能需要考虑查看地图 API。谷歌、必应、OpenStreetMaps 或其他一些具有不错 api 的地图服务,只需输入坐标和返回的距离即可确定您的用户是否在范围内。

这样您就可以处理边缘情况,并且您也不必再担心存储该数据。如果需要,它还可以让您为更高水平的精度做好准备。

于 2013-08-14T02:59:11.983 回答