0

Geocoding: Get the street name from Google API

Hi!
I already manage to get a response from the google API.

{
"results" : [
{
"address_components" : [
{
"long_name" : "299",
"short_name" : "299",
"types" : [ "street_number" ]
},
{
"long_name" : "Sidney Street",
"short_name" : "Sidney St",
"types" : [ "route" ]
},
{
"long_name" : "Cambridgeport",
"short_name" : "Cambridgeport",
"types" : [ "neighborhood", "political" ]
},
{
"long_name" : "Cambridge",
"short_name" : "Cambridge",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Middlesex County",
"short_name" : "Middlesex County",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "Massachusetts",
"short_name" : "MA",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "USA",
"short_name" : "US",
"types" : [ "country", "political" ]
},
{
"long_name" : "02139",
"short_name" : "02139",
"types" : [ "postal_code" ]
},
{
"long_name" : "4825",
"short_name" : "4825",
"types" : [ "postal_code_suffix" ]
}
],
"formatted_address" : "299 Sidney St, Cambridge, MA 02139, USA",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 42.355591,
"lng" : -71.1080628
},
"southwest" : {
"lat" : 42.3554331,
"lng" : -71.1082861
}
},
"location" : {
"lat" : 42.355512,
"lng" : -71.10815669999999
},
"location_type" : "ROOFTOP",
"viewport" : {
"northeast" : {
"lat" : 42.3568610302915,
"lng" : -71.1068254697085
},
"southwest" : {
"lat" : 42.3541630697085,
"lng" : -71.1095234302915
}
}
},
"partial_match" : true,
"place_id" : "ChIJt4pIW_t544kRaWhnaLrB61Q",
"types" : [ "premise" ]
}
],
"status" : "OK"
}

Unfortunately the order of the "address_components" are always different, depending on the address I am searching for. So what I am basically trying to do is search for the record where "types" equals "route" and then get the "long_name" for that. But there must be an easier solution, no?

1 reply

null
    • Sean
    • 3 yrs ago
    • Reported - view

    Hi Jan,

    This is what I came up with...

     

    let myObj := {
    results: [{
    address_components: [{
    long_name: "299",
    short_name: "299",
    types: ["street_number"]
    }, {
    long_name: "Sidney Street",
    short_name: "Sidney St",
    types: ["route"]
    }, {
    long_name: "Cambridgeport",
    short_name: "Cambridgeport",
    types: ["neighborhood", "political"]
    }, {
    long_name: "Cambridge",
    short_name: "Cambridge",
    types: ["locality", "political"]
    }, {
    long_name: "Middlesex County",
    short_name: "Middlesex County",
    types: ["administrative_area_level_2", "political"]
    }, {
    long_name: "Massachusetts",
    short_name: "MA",
    types: ["administrative_area_level_1", "political"]
    }, {
    long_name: "USA",
    short_name: "US",
    types: ["country", "political"]
    }, {
    long_name: "02139",
    short_name: "02139",
    types: ["postal_code"]
    }, {
    long_name: "4825",
    short_name: "4825",
    types: ["postal_code_suffix"]
    }],
    formatted_address: "299 Sidney St, Cambridge, MA 02139, USA",
    geometry: {
    bounds: {
    northeast: {
    lat: 42.355591,
    lng: -71.1080628
    },
    southwest: {
    lat: 42.3554331,
    lng: -71.1082861
    }
    },
    location: {
    lat: 42.355512,
    lng: -71.1081567
    },
    location_type: "ROOFTOP",
    viewport: {
    northeast: {
    lat: 42.3568610302915,
    lng: -71.1068254697085
    },
    southwest: {
    lat: 42.3541630697085,
    lng: -71.1095234302915
    }
    }
    },
    partial_match: true,
    place_id: "ChIJt4pIW_t544kRaWhnaLrB61Q",
    types: ["premise"]
    }],
    status: "OK"
    };
    let myCnt := 0;
    while item(myObj.results, 0).item(address_components, myCnt).item(types, 0) != "route" and myCnt < 15 do
    myCnt := myCnt + 1
    end
    ;
    item(myObj.results, 0).item(address_components, myCnt).long_name

Content aside

  • 3 yrs agoLast active
  • 1Replies
  • 326Views