Hi Henry,

Doesn't include any err testing/checking, but ... you could do
something like:

### in some rails project root:
$ cat ./tmp/t.runnable
def parse_lat_lng(json_str)
  lat, lng = [0.0, 0.0]
  location = JSON.parse(json_str)['results'][0]['geometry']
['location']
  lat, lng = location['lat'], location['lng']
  return [lat, lng]
end

#------------------
json_str = <<EOS
{
  "status": "OK",
  "results": [ {
    "types": [ "point_of_interest", "establishment" ],
    "formatted_address": "Buckingham Palace, Westminster, London, UK",
    "address_components": [ {
      "long_name": "Buckingham Palace",
      "short_name": "Buckingham Palace",
      "types": [ "point_of_interest", "establishment" ]
    }, {
      "long_name": "London",
      "short_name": "London",
      "types": [ "locality", "political" ]
    }, {
      "long_name": "Westminster",
      "short_name": "Westminster",
      "types": [ "administrative_area_level_3", "political" ]
    }, {
      "long_name": "Greater London",
      "short_name": "Gt Lon",
      "types": [ "administrative_area_level_2", "political" ]
    }, {
      "long_name": "England",
      "short_name": "England",
      "types": [ "administrative_area_level_1", "political" ]
    }, {
      "long_name": "United Kingdom",
      "short_name": "GB",
      "types": [ "country", "political" ]
    } ],
    "geometry": {
      "location": {
        "lat": 51.5007890,
        "lng": -0.1422640
      },
      "location_type": "APPROXIMATE",
      "viewport": {
        "southwest": {
          "lat": 51.4938426,
          "lng": -0.1582714
        },
        "northeast": {
          "lat": 51.5077344,
          "lng": -0.1262566
        }
      }
    }
  } ]
}
EOS

lat, lng = parse_lat_lng(json_str)
puts "lat=#{lat} lng=#{lng}"


$ ./script/runner ./tmp/t.runnable
lat=51.500789 lng=-0.142264

Jeff

On May 24, 7:02 pm, Henry Oss <li...@ruby-forum.com> wrote:
> The recently released Google maps API v3 returns geocoding info in json
> format as shown below.  I am sure there is an elegant way to extract the
> lat/lng but I have failed to find it after many attempts - can anyone
> help?  Thanks in advance.
>
> {
>   "status": "OK",
>   "results": [ {
>     "types": [ "point_of_interest", "establishment" ],
>     "formatted_address": "Buckingham Palace, Westminster, London, UK",
>     "address_components": [ {
>       "long_name": "Buckingham Palace",
>       "short_name": "Buckingham Palace",
>       "types": [ "point_of_interest", "establishment" ]
>     }, {
>       "long_name": "London",
>       "short_name": "London",
>       "types": [ "locality", "political" ]
>     }, {
>       "long_name": "Westminster",
>       "short_name": "Westminster",
>       "types": [ "administrative_area_level_3", "political" ]
>     }, {
>       "long_name": "Greater London",
>       "short_name": "Gt Lon",
>       "types": [ "administrative_area_level_2", "political" ]
>     }, {
>       "long_name": "England",
>       "short_name": "England",
>       "types": [ "administrative_area_level_1", "political" ]
>     }, {
>       "long_name": "United Kingdom",
>       "short_name": "GB",
>       "types": [ "country", "political" ]
>     } ],
>     "geometry": {
>       "location": {
>         "lat": 51.5007890,
>         "lng": -0.1422640
>       },
>       "location_type": "APPROXIMATE",
>       "viewport": {
>         "southwest": {
>           "lat": 51.4938426,
>           "lng": -0.1582714
>         },
>         "northeast": {
>           "lat": 51.5077344,
>           "lng": -0.1262566
>         }
>       }
>     }
>   } ]}
>
> --
> Posted viahttp://www.ruby-forum.com/.
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Ruby on Rails: Talk" group.
> To post to this group, send email to rubyonrails-t...@googlegroups.com.
> To unsubscribe from this group, send email to 
> rubyonrails-talk+unsubscr...@googlegroups.com.
> For more options, visit this group 
> athttp://groups.google.com/group/rubyonrails-talk?hl=en.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-t...@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to