Rails 5 - Geocoder Gem,使用多个参数进行搜索

时间:2018-02-04 06:37:18

标签: ruby-on-rails

我目前正在使用此geocoder gem作为rails。

目前,在我的网站上,用户输入他们的(6位数)邮政编码,之后,我会通过在地理编码器上搜索它来生成他们的街道名称:

results = Geocoder.search(their_postal_code)
# handle results to get the street name

这适用于大多数邮政编码。但是,对于某些邮政编码,它不会返回所需的国家(在这种情况下是新加坡)。

geocoder website未指定使用多个参数进行Geocoder.search的方式。

github website上,我遇到的唯一一个是:

# with Google:
Geocoder.search("Paris", :bounds => [[32.1,-95.9], [33.9,-94.3]])

这促使我尝试了这样的变体:

Geocoder.search("123456", country: "SG")
Geocoder.search("123456", country: "Singapore")
Geocoder.search("SG", postal_code: "123456")
Geocoder.search("Singapore", postal_code: "123456")

这些似乎都不起作用。我如何搜索邮政编码并指定国家/地区?

1 个答案:

答案 0 :(得分:0)

我终于找到了我认为应该是我问题的正确答案。我无法复制它(使用不同的地址),因为我不可能找到错误的"解决并测试它。无论如何,这是解决方案:

根据地理编码的Google's documentation,您可以通过多种方法对地理位置进行地理编码。其中一个是Component Filtering,这是我们应该关注的那个。

现在我无法绝对肯定地说这是否是正确的解决方案,因为再一次,我无法用任何不同的答案进行测试。但这是有效的:

Geocoder.search(" input your component:value pairs and separate with a | ")

所以它看起来像:

Geocoder.search("postal_code: 123456 | country: Singapore")

请注意,根据Google的文档,管道|AND功能,而不是OR功能。希望这能解决别人的问题!