Возврат соседства из API геокодирования Google?

У меня возникли проблемы с возвратом названия района из API геокодирования Google. Я просто пытался отфильтровать, чтобы получить его, но я получаю сообщение об ошибке «фильтр не является функцией».

Я думал... filter.results(item => item.types === 'neighborhood')

Но я также хочу вернуть long_name типа окрестности.

Спасибо за помощь!

Вот пример объекта из их документов:

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "277",
               "short_name" : "277",
               "types" : [ "street_number" ]
            },
            {
               "long_name" : "Bedford Avenue",
               "short_name" : "Bedford Ave",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Williamsburg",
               "short_name" : "Williamsburg",
               "types" : [ "neighborhood", "political" ]
            },
            {
               "long_name" : "Brooklyn",
               "short_name" : "Brooklyn",
               "types" : [ "sublocality", "political" ]
            },
            {
               "long_name" : "Kings",
               "short_name" : "Kings",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "New York",
               "short_name" : "NY",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "United States",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "11211",
               "short_name" : "11211",
               "types" : [ "postal_code" ]
            }
         ],
         "formatted_address" : "277 Bedford Avenue, Brooklyn, NY 11211, USA",
         "geometry" : {
            "location" : {
               "lat" : 40.714232,
               "lng" : -73.9612889
            },
            "location_type" : "ROOFTOP",
            "viewport" : {
               "northeast" : {
                  "lat" : 40.7155809802915,
                  "lng" : -73.9599399197085
               },
               "southwest" : {
                  "lat" : 40.7128830197085,
                  "lng" : -73.96263788029151
               }
            }
         },
         "place_id" : "ChIJd8BlQ2BZwokRAFUEcm_qrcA",
         "types" : [ "street_address" ]
      },

person Dres    schedule 07.08.2018    source источник
comment
Поделитесь кодом, который вызывает ошибку   -  person Hamms    schedule 08.08.2018
comment
filter.results не будет работать, если вы хотите отфильтровать что-то из массива результатов, вам нужно использовать results.filter,   -  person karthick    schedule 08.08.2018
comment
спасибо @karthick, какие-нибудь рекомендации о том, как получить информацию, которую я ищу?   -  person Dres    schedule 08.08.2018
comment
@Dres, я приложил пример   -  person karthick    schedule 08.08.2018


Ответы (1)


Я прикрепил пример,

Результирующий набор обычно будет содержать множество адресных компонентов, поскольку критерии, которые вы фильтруете, находятся внутри вложенного массива, вам нужно сначала добраться до этого массива.

следующая строка выведет массив адресов, в зависимости от ваших требований, вы можете либо показать все, либо выбрать первый.

var address = sample.results.reduce(function(prev, result) {
      return prev.concat(result.address_components.filter((item) => item.types.indexOf('route') > -1));
},[]);

var sample = {
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "1600",
               "short_name" : "1600",
               "types" : [ "street_number" ]
            },
            {
               "long_name" : "Amphitheatre Pkwy",
               "short_name" : "Amphitheatre Pkwy",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Mountain View",
               "short_name" : "Mountain View",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Santa Clara County",
               "short_name" : "Santa Clara County",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "California",
               "short_name" : "CA",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "United States",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "94043",
               "short_name" : "94043",
               "types" : [ "postal_code" ]
            }
         ],
         "formatted_address" : "1600 Amphitheatre Parkway, Mountain View, CA 94043, USA",
         "geometry" : {
            "location" : {
               "lat" : 37.4224764,
               "lng" : -122.0842499
            },
            "location_type" : "ROOFTOP",
            "viewport" : {
               "northeast" : {
                  "lat" : 37.4238253802915,
                  "lng" : -122.0829009197085
               },
               "southwest" : {
                  "lat" : 37.4211274197085,
                  "lng" : -122.0855988802915
               }
            }
         },
         "place_id" : "ChIJ2eUgeAK6j4ARbn5u_wAGqWA",
         "types" : [ "street_address" ]
      }
   ],
   "status" : "OK"
};

var address = sample.results.reduce(function(prev, result) {
      return prev.concat(result.address_components.filter((item) => item.types.indexOf('route') > -1));
},[]);
        
console.log(address[0]," :: " , address[0].long_name ) // this will retrieve the very first filtered value

person karthick    schedule 07.08.2018