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

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

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

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

Использовать текстовый поиск (новинка)

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

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": [
    {
      "legs": [
        object (Leg)
      ]
    }
  ]
}

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

Длина массива routingSummaries такая же, как длина массива places . В случае, когда routingSummary для места недоступна, запись массива пуста.

Поскольку в этом примере вычисляются продолжительность и расстояние от начала маршрута до каждого места, поле 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
        }
      ]
    },
    {
      "legs": [
        {
          "duration": "562s",
          "distanceMeters": 2345
        }
      ]
    },
   …
  ]
}

Из этого примера видно, что продолжительность и расстояние от начала маршрута до первого места в результатах составляет 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'