Как рассчитать сводку маршрутов

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

  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. Нажмите кнопку Выполнить. В диалоговом окне выберите аккаунт, который хотите использовать для запроса.

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