Как сочетать сводки маршрутов с поиском по пути
Вы можете объединить расчеты сводки маршрута с поиском вдоль маршрута. В этом случае текстовый поиск (новый) возвращает продолжительность поездки и расстояние до каждого места в ответе, а затем от каждого места до конечного пункта назначения маршрута.
Чтобы использовать новый текстовый поиск для расчета сводки маршрута вместе с поиском вдоль маршрута:
-
Используйте Routes API, чтобы рассчитать маршрут, который возвращает полилинию маршрута в ответе.
-
Используйте параметр
searchAlongRouteParameters.polyline.encodedPolyline, чтобы передать ломаную линию маршрута в новую версию текстового поиска и настроить результаты поиска с учетом маршрута. В ответе будут места, которые соответствуют критериям поиска и находятся рядом с указанным маршрутом. -
Добавьте
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 секунд и 58 147 метров.
Как указать пункт отправления, способ передвижения и модификаторы маршрута
Вы можете изменить расчет сводки по поиску и построению маршрута, указав исходную точку маршрута, способ передвижения, модификаторы маршрута и настройки маршрутизации. Способ передвижения и модификаторы маршрута работают так же, как и при расчете сводных данных о маршруте без указания маршрута, как показано в разделе Указание параметров поездки.
По умолчанию первый отрезок каждого результата содержит расстояние от исходной точки, заданной ломаной линией, до каждого места. Однако вы можете переопределить это значение по умолчанию, явно указав в запросе источник маршрутизации. Если задано, первый этап всех ответов будет содержать расстояния и продолжительность от указанного исходного пункта маршрута, переопределяя исходный пункт из ломаной линии.
В следующем примере в качестве исходной точки маршрута указаны координаты города Сан-Матео (Калифорния, США), задан параметр "избегать платных дорог" и установлено количество результатов, равное пяти:
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 и его возможностями.
Нажмите на значок API api в правой части страницы.
При необходимости измените параметры запроса.
Нажмите кнопку Выполнить. В диалоговом окне выберите аккаунт, который хотите использовать для запроса.
На панели API Explorer нажмите на значок полноэкранного режима fullscreen, чтобы развернуть окно API Explorer.