Магазин Google Places API откликнется в списке? - PullRequest
0 голосов
/ 26 марта 2020

В настоящее время я работаю над проектом, в котором я хочу сделать несколько вызовов в режиме "Поиск рядом" в API Google Адресов и сохранить результаты в списке, чтобы я мог случайным образом выбрать одно из мест в этом списке для отображения в качестве маркера на карте. По какой-то причине у меня возникают проблемы с сохранением этих мест в списке. Есть идеи почему?

Заранее спасибо и извините, если это запутанный или "тупой" вопрос!

lookUp = '';
for (typefood = 0; typefood<14; typefood++)
{
    placeHolder = typefood;
    lookUp = ratings [typefood][0];
    let request = {location: center, radius: 10000, type: 'restaurant', keyword: lookUp};
    service.nearbySearch(request, callback);
}

function callback(results, status)
{
    if (status == google.maps.places.PlacesServiceStatus.OK)
    {
        document.getElementById("result").innerHTML = results
        for(var i=0; i < ratings[i][2]; i++)
        {
            if (results.length != 0)
            {
                var rand = Math.floor(Math.random() * results.length); 
                recommendedFood[] = results[rand];
            }
            else
                break                    
        }
    }
}

function createMarker(place)
{
    var placeLoc = place.geometry.location;
    var marker = new google.maps.Marker({map: map, position: place.geometry.location});

    google.maps.event.addListener(marker, 'click', function()
    {
        infoWind.setContent(place.name);
        infoWind.open(map, this);
    });
}

1 Ответ

0 голосов
/ 26 марта 2020

Пример URL API: https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=YOUR_LAT, YOUR_LONG & radius = 500 & keyword = food & key = YOUR_KEY

Все доступные параметры для API можно найти здесь: Ближайшие поисковые запросы

Предполагается, что response является возвращаемым объектом API поиска Google Maps.

const keywords = ['my', 'multiple', 'keyword', 'searches']
let list = []

keywords.forEach(async(keyword) => {
  await nearbySearchCall(keyword)          // This is your nearby place search logic
  let results = response.results
  list.push(...results)
})

// insert code here for iterating the responses and plotting onto the map.

РЕДАКТИРОВАТЬ: Вот пример ответа:

{
   "html_attributions" : [],
   "next_page_token" : "XXX",
   "results" : [
      {
         "geometry" : {
            "location" : {
               "lat" : -33.870504,
               "lng" : 151.194701
            },
            "viewport" : {
               "northeast" : {
                  "lat" : -33.86920117010728,
                  "lng" : 151.1959348798927
               },
               "southwest" : {
                  "lat" : -33.87190082989272,
                  "lng" : 151.1932352201072
               }
            }
         },
         "icon" : "https://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png",
         "id" : "037fd9f1c8b4d2e619339ae657b8d999db18fa82",
         "name" : "Souks Mediterranean street Food",
         "opening_hours" : {
            "open_now" : false
         },
         "photos" : [
            {
               "height" : 3000,
               "html_attributions" : [
                  "\u003ca href=\"https://maps.google.com/maps/contrib/107602080732269089579\"\u003eMichel Elias\u003c/a\u003e"
               ],
               "photo_reference" : "CmRaAAAAECqpmq1nv2ZnTYRR0CHLiUmXRGokDWRZOoJ6eKiMmsSgs178qEFzyeBg9wN2SsXVhEqZ7ZiiSWJvC0nI34okFQaxoCp2AGAxUI3aidIkeIkwrUmbMsOFRHDkS6dJ3LWwEhB3ggx1pRvg0PkUZR8faiYpGhR8N1AdqCZz5pRSFZ6RjwYNaHFskg",
               "width" : 4000
            }
         ],
         "place_id" : "ChIJoWRiMTGuEmsR-JwHgEwhcqc",
         "plus_code" : {
            "compound_code" : "45HV+QV Sydney, New South Wales, Australia",
            "global_code" : "4RRH45HV+QV"
         },
         "price_level" : 2,
         "rating" : 4.6,
         "reference" : "ChIJoWRiMTGuEmsR-JwHgEwhcqc",
         "scope" : "GOOGLE",
         "types" : [ "cafe", "restaurant", "food", "point_of_interest", "establishment" ],
         "user_ratings_total" : 202,
         "vicinity" : "190 Harris St, Sydney"
      },
      {
         "geometry" : {
            "location" : {
               "lat" : -33.8676729,
               "lng" : 151.1919817
            },
            "viewport" : {
               "northeast" : {
                  "lat" : -33.86618872010727,
                  "lng" : 151.1936440298927
               },
               "southwest" : {
                  "lat" : -33.86888837989272,
                  "lng" : 151.1909443701072
               }
            }
         },
         "icon" : "https://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png",
         "id" : "0e24b14f3c0c178aa4d64feaf651824f18fd2428",
         "name" : "Thai Food 4 You",
         "opening_hours" : {
            "open_now" : false
         },
         "photos" : [
            {
               "height" : 4128,
               "html_attributions" : [
                  "\u003ca href=\"https://maps.google.com/maps/contrib/104944526070426091805\"\u003eAdrian Sciacca\u003c/a\u003e"
               ],
               "photo_reference" : "CmRaAAAAmn_zL94L2gkLftk_k0E_eKet9sfacHSf3b50e8pKWy8FagVoHT-kZJCuu7NXN49zGG3ld1MlZkaKIr4RMZxclcyadzJt1sE5N2nDN6vXTUlCmzUQpGN9aVjo6Rwa2FbzEhDHoFli3fu1V8qkOFwhZwrvGhRxo39410kQHtjswafiTzQaq7YcKQ",
               "width" : 1908
            }
         ],
         "place_id" : "ChIJIzrwMTSuEmsRjxxHr1x63y0",
         "plus_code" : {
            "compound_code" : "45JR+WQ Pyrmont, New South Wales, Australia",
            "global_code" : "4RRH45JR+WQ"
         },
         "price_level" : 1,
         "rating" : 4.2,
         "reference" : "ChIJIzrwMTSuEmsRjxxHr1x63y0",
         "scope" : "GOOGLE",
         "types" : [
            "meal_delivery",
            "meal_takeaway",
            "restaurant",
            "food",
            "point_of_interest",
            "establishment"
         ],
         "user_ratings_total" : 75,
         "vicinity" : "Shop 12/45-55 Harris St, Pyrmont"
      }
   ],
   "status" : "OK"
}

...