Search code examples
javascriptarraysjsonparsinggoogle-maps-api-2

reading in jSON data with javascript


Trying to read in some information from the google maps api into my application with JS. But havent quiet got my head around accessing the information in the returned jSON object. My JS is...

        var site = "./maps/scripts/reverseGeocode/locale.php";
        var params = "lat="+lat+"&"+"lng="+lng;

        var object = system.functions().ajax(site, params);

            var result = object.address_components[0];

          alert(result);

The jSON object is as follows...

  {
    "results" : [
      {
     "address_components" : [
        {
           "long_name" : "24",
           "short_name" : "24",
           "types" : [ "street_number" ]
        },
        {
           "long_name" : "Carabella St",
           "short_name" : "Carabella St",
           "types" : [ "route" ]
        },
        {
           "long_name" : "Kirribilli",
           "short_name" : "Kirribilli",
           "types" : [ "locality", "political" ]
        },
        {
           "long_name" : "New South Wales",
           "short_name" : "NSW",
           "types" : [ "administrative_area_level_1", "political" ]
        },
        {
           "long_name" : "Australia",
           "short_name" : "AU",
           "types" : [ "country", "political" ]
        },
        {
           "long_name" : "2061",
           "short_name" : "2061",
           "types" : [ "postal_code" ]
        }
     ],
     "formatted_address" : "24 Carabella St, Kirribilli NSW 2061, Australia",
     "geometry" : {
        "bounds" : {
           "northeast" : {
              "lat" : -33.84886950,
              "lng" : 151.21871730
           },
           "southwest" : {
              "lat" : -33.84960880,
              "lng" : 151.21810640
           }
        },
        "location" : {
           "lat" : -33.84892950,
           "lng" : 151.21817770
        },
        "location_type" : "RANGE_INTERPOLATED",
        "viewport" : {
           "northeast" : {
              "lat" : -33.84789016970850,
              "lng" : 151.2197608302915
           },
           "southwest" : {
              "lat" : -33.85058813029150,
              "lng" : 151.2170628697085
           }
        }
     },
     "types" : [ "street_address" ]
  },
  {
     "address_components" : [
        {
           "long_name" : "Kirribilli",
           "short_name" : "Kirribilli",
           "types" : [ "locality", "political" ]
        },
        {
           "long_name" : "New South Wales",
           "short_name" : "NSW",
           "types" : [ "administrative_area_level_1", "political" ]
        },
        {
           "long_name" : "Australia",
           "short_name" : "AU",
           "types" : [ "country", "political" ]
        },
        {
           "long_name" : "2061",
           "short_name" : "2061",
           "types" : [ "postal_code" ]
        }
     ],
     "formatted_address" : "Kirribilli NSW 2061, Australia",
     "geometry" : {
        "bounds" : {
           "northeast" : {
              "lat" : -33.84245090,
              "lng" : 151.22032150
           },
           "southwest" : {
              "lat" : -33.85270230,
              "lng" : 151.21152060
           }
        },
        "location" : {
           "lat" : -33.84753980000001,
           "lng" : 151.21314540
        },
        "location_type" : "APPROXIMATE",
        "viewport" : {
           "northeast" : {
              "lat" : -33.84245090,
              "lng" : 151.22032150
           },
           "southwest" : {
              "lat" : -33.85270230,
              "lng" : 151.21152060
           }
        }
     },
     "types" : [ "locality", "political" ]
  },
  {
     "address_components" : [
        {
           "long_name" : "2061",
           "short_name" : "2061",
           "types" : [ "postal_code" ]
        },
        {
           "long_name" : "New South Wales",
           "short_name" : "NSW",
           "types" : [ "administrative_area_level_1", "political" ]
        },
        {
           "long_name" : "Australia",
           "short_name" : "AU",
           "types" : [ "country", "political" ]
        }
     ],
     "formatted_address" : "New South Wales 2061, Australia",
     "geometry" : {
        "bounds" : {
           "northeast" : {
              "lat" : -33.84234370,
              "lng" : 151.22032150
           },
           "southwest" : {
              "lat" : -33.85270230,
              "lng" : 151.20932150
           }
        },
        "location" : {
           "lat" : -33.84839570,
           "lng" : 151.21461550
        },
        "location_type" : "APPROXIMATE",
        "viewport" : {
           "northeast" : {
              "lat" : -33.84234370,
              "lng" : 151.22032150
           },
           "southwest" : {
              "lat" : -33.85270230,
              "lng" : 151.20932150
           }
        }
     },
     "types" : [ "postal_code" ]
  },
  {
     "address_components" : [
        {
           "long_name" : "New South Wales",
           "short_name" : "NSW",
           "types" : [ "administrative_area_level_1", "political" ]
        },
        {
           "long_name" : "Australia",
           "short_name" : "AU",
           "types" : [ "country", "political" ]
        }
     ],
     "formatted_address" : "New South Wales, Australia",
     "geometry" : {
        "bounds" : {
           "northeast" : {
              "lat" : -28.15619210,
              "lng" : 153.63873290
           },
           "southwest" : {
              "lat" : -37.50503180,
              "lng" : 140.99921220
           }
        },
        "location" : {
           "lat" : -31.25321830,
           "lng" : 146.9210990
        },
        "location_type" : "APPROXIMATE",
        "viewport" : {
           "northeast" : {
              "lat" : -28.15619210,
              "lng" : 153.63873290
           },
           "southwest" : {
              "lat" : -37.50503180,
              "lng" : 140.99921220
           }
        }
     },
     "types" : [ "administrative_area_level_1", "political" ]
  },
  {
     "address_components" : [
        {
           "long_name" : "Australia",
           "short_name" : "AU",
           "types" : [ "country", "political" ]
        }
     ],
     "formatted_address" : "Australia",
     "geometry" : {
        "bounds" : {
           "northeast" : {
              "lat" : -9.22108360,
              "lng" : 159.10545890
           },
           "southwest" : {
              "lat" : -54.77721850,
              "lng" : 112.92145430
           }
        },
        "location" : {
           "lat" : -25.2743980,
           "lng" : 133.7751360
        },
        "location_type" : "APPROXIMATE",
        "viewport" : {
           "northeast" : {
              "lat" : -9.22108360,
              "lng" : 159.10545890
           },
           "southwest" : {
              "lat" : -54.77721850,
              "lng" : 112.92145430
           }
        }
     },
     "types" : [ "country", "political" ]
  }
  ],
  "status" : "OK" 
 }

I am trying to access the address component... but am unsure how to traverse the object correctly.. could someone help me.

           "long_name" : "Kirribilli",
           "short_name" : "Kirribilli",

Solution

  • This should do it:

    var long_name = object.address_components[2].long_name;
    var short_name = object.address_components[2].short_name;
    

    EDIT: suggest you use jquery ajax instead for the fetch:

    var site = "./maps/scripts/reverseGeocode/locale.php";
    var params = "lat="+lat+"&"+"lng="+lng;
    
    $.get(site + '/' + params, function(data) {
        var long_name = data.address_components[2].long_name;
        var short_name = data.address_components[2].short_name;
    });