0

住所から都市、州、および郵便番号を取得できる宝石/方法はありますか? 例えば:

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

できれば、Google マップを使用するもの。

4

4 に答える 4

4

ruby geocoder gemはまさにそれを行います。

require 'geocoder'
Geocoder.search('100 Rue de la Paix')
=> # Array of results

これにより、アドレスが検索され、結果が表示されます。

于 2013-07-29T16:03:56.043 に答える
-1

OpenStreetMap を試してください:

リクエスト:

結果:

 <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>
于 2013-07-29T16:03:07.657 に答える
-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 の利用規約に従って、ページのどこかに地図 (Google) を表示する必要があります。

于 2013-07-29T16:08:49.490 に答える