Объедините сводки маршрутизации с поиском по маршруту

Вы можете объединить расчёт сводки маршрута с поиском по маршруту . В этом случае текстовый поиск (новый) возвращает длительность поездки и расстояние до каждого места в ответе, а затем от каждого места до конечного пункта маршрута.

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

  1. Используйте API маршрутов для расчета маршрута, который возвращает полилинию маршрута в ответе.

  2. Используйте параметр searchAlongRouteParameters.polyline.encodedPolyline , чтобы передать ломаную линию маршрута в функцию Text Search (New), чтобы сместить результаты поиска в соответствии с маршрутом. В ответе будут отображаться места, соответствующие критериям поиска и расположенные рядом с указанным маршрутом.

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

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

По умолчанию Текстовый поиск (новый) выполняет поиск по всему маршруту:

curl -X POST -d '{
  "textQuery" : "Spicy Vegetarian Food",
  "searchAlongRouteParameters": {
    "polyline": {
      "encodedPolyline": "ROUTE_POLYLINE"
    }
  }
}' \
-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'

Ответ содержит два массива: массив places , содержащий соответствующие места, и массив routingSummaries содержащий продолжительность и расстояние поездки до каждого места:

{
  "places": [
    {
      "formattedAddress": "1199 El Camino Real, San Bruno, CA 94066, USA",
      "priceLevel": "PRICE_LEVEL_INEXPENSIVE",
      "displayName": {
        "text": "Vegan Mob - Vegan BBQ and Soul Food",
        "languageCode": "en"
      }
    },
    {
      "formattedAddress": "839 Kearny St, San Francisco, CA 94108, USA",
      "priceLevel": "PRICE_LEVEL_MODERATE",
      "displayName": {
        "text": "Enjoy Vegetarian",
        "languageCode": "en"
      }
    },
   
],
  "routingSummaries": [
    {
      "legs": [
        {
          "duration": "285s",
          "distanceMeters": 1616
        },
        {
          "duration": "2466s",
          "distanceMeters": 58147
        }
      ],
      "directionsUri": "https://www.google.com/maps/dir/37.42268,-122.08473/''/37.77877,-122.38781/data=!4m7!4m6!1m0!1m2!1m1!1s0x808f87f9ede375f5:0xa37171fea1a16b28!1m0!3e0"
    },
    {
      "legs": [
        {
          "duration": "696s",
          "distanceMeters": 4704
        },
        {
          "duration": "2787s",
          "distanceMeters": 58901
        }
      ],
      "directionsUri": "https://www.google.com/maps/dir/37.42268,-122.08473/''/37.77877,-122.38781/data=!4m7!4m6!1m0!1m2!1m1!1s0x808580f4cebdb06f:0xd3af09e5742234f2!1m0!3e0"
    },
   
  ]
}

Для каждой записи в массиве legs текстовый поиск (новый) возвращает время двухэтапной поездки:

  • Первый этап содержит длительность и расстояние от начальной точки до пункта назначения. В этом примере длительность и расстояние от начальной точки до первого пункта назначения в результатах составляют 285 секунд и 1616 метров.

  • Второй этап содержит длительность и расстояние от точки до конечной точки маршрута. В данном примере длительность и расстояние составляют 2466 секунд и 58147 метров.

Укажите исходную точку маршрута, режим движения и модификаторы маршрута.

Вы можете изменить расчёт сводки поиска и маршрута, указав исходную точку маршрута, режим передвижения, модификаторы маршрута и параметры маршрутизации. Режим передвижения и модификаторы маршрута работают так же, как и при расчёте сводки маршрута без указания маршрута, как показано в разделе «Указание параметров маршрута ».

По умолчанию первый отрезок каждого результата содержит расстояние от начальной точки, определяемой ломаной, до каждого места. Однако это значение по умолчанию можно переопределить, явно указав начальную точку маршрута в запросе. Если она указана, первый отрезок всех ответов указывает расстояние и длительность пути от указанной начальной точки маршрута, переопределяя начальную точку, определяемую ломаной.

В следующем примере вы указываете начальную точку маршрута в виде координат Сан-Матео, Калифорния, указываете, что необходимо избегать платных дорог, и устанавливаете количество результатов равным 5:

  curl -X POST -d '{
    "textQuery" : "Spicy Vegetarian Food",
    "maxResultCount": 5,
    "searchAlongRouteParameters": {
      "polyline": {
        "encodedPolyline": "ROUTE_POLYLINE"
      }
    },
    "routingParameters": {
      "origin": {
        "latitude": 37.56617,
        "longitude": -122.30870
      },
      "travelMode":"DRIVE",
      "routeModifiers": {
        "avoidTolls": 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. На панели обозревателя API выберите значок полноэкранного режима, чтобы развернуть окно обозревателя API.