是否有任何宝石/方式可以让我从街道地址中检索城市,州和邮政编码?例如:
results = Search.find("100 Rue de la Paix")
results.each do |address|
address.city => "Timbuktu"
address.state => "Timbuktu Region"
address.country => "Mali"
address.post_code => "123456"
end
最好使用谷歌地图。
答案 0 :(得分:4)
红宝石geocoder gem就是这样做的:
require 'geocoder'
Geocoder.search('100 Rue de la Paix')
=> # Array of results
搜索地址并显示结果。
答案 1 :(得分:0)
您可以尝试SmartyStreets'自动填充API。我在SmartyStreets工作并帮助写了它。你可以在主页上试试。我看到你在美国境外有地址,SmartyStreets自动填充目前仅限美国,但也许它仍然有用。但是,SmartyStreets确实提供其他服务,例如国际地址验证。
从技术上讲,它接受“前缀”(可以只是街道地址),并建议最多10个城市/州组合。从那里,您将继续使用LiveAddress API验证地址的有效性,以填写邮政编码等。
实际上没有给出任何其他答案,并且所有这些答案实际上都会返回无效结果,因此请务必在完成之前进行验证。请注意,只有少数几个国家/地区实际拥有数据来验证交付点级别的街道地址(如房屋或商家),有些国家/地区可以使用街道地址,其中一些国家/地区至少需要城市/地区的粒度。
答案 2 :(得分:-1)
<强>请求:强>
<强>结果:强>
<searchresults timestamp="Sat, 07 Nov 09 14:42:10 +0000" querystring="135 pilkington, avenue birmingham" polygon="true">
<place
place_id="1620612" osm_type="node" osm_id="452010817"
boundingbox="52.548641204834,52.5488433837891,-1.81612110137939,-1.81592094898224"
polygonpoints="[['-1.81592098644987','52.5487429714954'],['-1.81592290792183','52.5487234624632'],...]"
lat="52.5487429714954" lon="-1.81602098644987"
display_name="135, Pilkington Avenue, Wylde Green, City of Birmingham, West Midlands (county), B72, United Kingdom"
class="place" type="house">
<house>135</house>
<road>Pilkington Avenue</road>
<village>Wylde Green</village>
<town>Sutton Coldfield</town>
<city>City of Birmingham</city>
<county>West Midlands (county)</county>
<postcode>B72</postcode>
<country>United Kingdom</country>
<country_code>gb</country_code>
</place>
</searchresults>
答案 3 :(得分:-1)
如果你可以使用javascript:
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script>
function codeAddress(address) {
var geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'address': address }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
city = results[0].address_components[2].long_name;
state = results[0].address_components[4].long_name;
country = results[0].address_components[5].long_name;
postalCode = results[0].address_components[6].long_name;
// Example...
alert(city);
}
});
}
var address = "100 Rue de la Paix";
codeAddress(address);
</script>
如果您需要有关该位置的更多信息,请参阅此文档:https://developers.google.com/maps/documentation/geocoding/#GeocodingResponses
此外,如果您使用的是Google Maps API,则必须根据服务条款在页面的某个位置显示地图(Google)。