Рассчитать сводку маршрутизации

Чтобы использовать текстовый поиск (New) или поиск поблизости (New) для расчета времени в пути и расстояния до каждого места в ответе, сделайте следующее:

  1. Передайте в запросе параметр routingParameters.origin, чтобы указать координаты широты и долготы начальной точки маршрута. Этот параметр необходим для расчета времени и расстояния до каждого места в ответе.

  2. Добавьте routingSummaries в маску поля, чтобы ответ содержал массив routingSummaries. Этот массив содержит продолжительность и расстояние от начальной точки маршрута до каждого места в ответе.

API Explorer позволяет отправлять запросы в реальном времени, чтобы вы могли ознакомиться с API и его возможностями.

В следующем запросе вы рассчитываете время в пути и расстояние до каждого места в ответе Text Search (New):

curl -X POST -d '{
  "textQuery" : "Spicy Vegetarian Food in Sydney, Australia",
  "routingParameters": {
    "origin": {
      "latitude": -33.8688,
      "longitude": 151.1957362
    }
  }
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \
-H 'X-Goog-FieldMask: places.displayName,places.formattedAddress,places.priceLevel,routingSummaries' \
'https://places.googleapis.com/v1/places:searchText'

Ответ содержит два массива JSON: массив places содержит подходящие места, а массив routingSummaries – время в пути и расстояние до каждого места.

{
  "places": [
    {
      object (Place)
    }
  ]
  "routingSummaries": [
    {
      object (RoutingSummary)
    }
}

Каждый элемент в массиве routingSummaries находится в том же месте, что и соответствующий элемент в массиве places. То есть элемент routingSummaries[0] соответствует месту places[0].

Длина массива routingSummaries совпадает с длиной массива places. Если routingSummary для места недоступен, элемент массива будет пустым.

Поскольку в этом примере рассчитывается время и расстояние от начальной точки маршрута до каждого места, поле routingSummaries.legs в ответе содержит один объект Leg, который содержит duration и distanceMeters от начальной точки маршрута до места.

{
  "places": [
    {
      "formattedAddress": "1, Westfield Sydney Central Plaza, 450 George St, Sydney NSW 2000, Australia",
      "displayName": {
        "text": "Gözleme King Sydney",
        "languageCode": "en"
      }
    },
    {
      "formattedAddress": "367 Pitt St, Sydney NSW 2000, Australia",
      "priceLevel": "PRICE_LEVEL_MODERATE",
      "displayName": {
        "text": "Mother Chu's Vegetarian Kitchen",
        "languageCode": "en"
      }
    },
    …
  ]
  "routingSummaries": [
    {
      "legs": [
        {
          "duration": "597s",
          "distanceMeters": 2607
        }
      ],
      "directionsUri": "https://www.google.com/maps/dir/-33.8688,151.1957362/''/data=!4m6!4m5!1m0!1m2!1m1!1s0x6b12ae3fa97cd745:0x6aecf365bf497c08!3e0"
    },
    {
      "legs": [
        {
          "duration": "562s",
          "distanceMeters": 2345
        }
      ],
      "directionsUri": "https://www.google.com/maps/dir/-33.8688,151.1957362/''/data=!4m6!4m5!1m0!1m2!1m1!1s0x6b12ae3da97f60c1:0x845f3273bd764f6c!3e0"
    },
   …
  ]
}

Из этого примера видно, что время в пути и расстояние от начальной точки маршрута до первого места в результатах составляют 597 секунд и 2607 метров.

В этом примере вы рассчитываете время в пути и расстояние до каждого места в ответе на запрос поиска поблизости. В этом примере выполняется поиск ресторанов в Сиднее (Австралия). Ограничение местоположения и начальная точка маршрута задаются с помощью одних и тех же координат широты и долготы.

  curl -X POST -d '{
    "includedTypes": ["restaurant"],
    "maxResultCount": 10,
    "locationRestriction": {
      "circle": {
        "center": {
          "latitude": -33.8688,
          "longitude": 151.1957362},
        "radius": 500.0
      }
    },
    "routingParameters": {
      "origin": {
        "latitude": -33.8688,
        "longitude": 151.1957362
      }
    }
  }' \
  -H 'Content-Type: application/json' -H "X-Goog-Api-Key:API_KEY" \
  -H "X-Goog-FieldMask: places.displayName,routingSummaries" \
  https://places.googleapis.com/v1/places:searchNearby

Необязательно использовать одни и те же координаты для locationRestriction и для начальной точки маршрута. Например, вы можете указать в параметре locationRestriction центр Сиднея, чтобы результаты поиска были смещены в сторону этого города. Но затем вы устанавливаете в качестве начальной точки маршрута координаты своего дома, то есть другое местоположение в пределах круга поиска. Затем запрос смещает результаты поиска в сторону круга и рассчитывает сводки маршрутов на основе местоположения вашего дома.

Укажите параметры поездки

По умолчанию длительность и расстояние рассчитываются для автомобиля. Однако вы можете указать тип транспортного средства и другие параметры в поиске.

В следующем примере вы указываете способ передвижения DRIVE и избегаете автомагистралей:

curl -X POST -d '{
  "textQuery" : "Spicy Vegetarian Food in Sydney, Australia",
  "routingParameters": {
    "origin": {
      "latitude": -33.8688,
      "longitude": 151.1957362
    },
    "travelMode":"DRIVE",
    "routeModifiers": {
      "avoidHighways": true
    }
  }
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \
-H 'X-Goog-FieldMask: places.displayName,places.formattedAddress,places.priceLevel,routingSummaries' \
'https://places.googleapis.com/v1/places:searchText'

Попробовать

С помощью API Explorer можно отправлять тестовые запросы, чтобы ознакомиться с API и его возможностями.

  1. Нажмите на значок API api в правой части страницы.

  2. При необходимости измените параметры запроса.

  3. Нажмите кнопку Execute (Выполнить). В диалоговом окне выберите аккаунт, который хотите использовать для отправки запроса.

  4. На панели API Explorer нажмите на значок полноэкранного режима fullscreen, чтобы развернуть окно API Explorer.