Yönlendirme özetini hesaplama
Yanıttaki her bir yere olan seyahat süresini ve mesafeyi hesaplamak için Metin Arama (Yeni) veya Yakındaki Arama (Yeni)'yı kullanmak istiyorsanız:
-
Yönlendirme kaynağının enlem ve boylam koordinatlarını belirtmek için
setOrigin()
parametresini kullanarak istekteRoutingParameters
parametresini iletin. Bu parametre, yanıttaki her bir yerin süresini ve mesafesini hesaplamak için gereklidir. -
İstek nesnesini oluştururken
.setRoutingSummariesIncluded(true)
ekleyin.
Metin aramayı kullanma (Yeni)
Aşağıdaki istekte, Metin Arama (Yeni) yanıtındaki her bir yere olan seyahat süresini ve mesafeyi hesaplarsınız:
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME); // Define the routing parameters object and pass the routing origin. RoutingParameters routingParameters = RoutingParameters.builder() .setOrigin(toLatLng("-33.8688, 151.1957362")) .build(); // Use the builder to create a SearchByTextRequest object and pass the routing parameters. // Set setRoutingSummariesIncluded to true. final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food in Sydney, Australia", placeFields) .setMaxResultCount(10) .setRoutingParameters(routingParameters) .setRoutingSummariesIncluded(true) .build(); // Call PlacesClient.searchByText() to perform the search. // Define a response handler to process the returned Lists of Place objects, RoutingSummary objects, and Leg objects. placesClient.searchByText(searchByTextRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); List<RoutingSummary> routingSummaries = response.getRoutingSummaries(); List<Leg> legs = routingSummaries.get(0).getLegs(); Duration duration = legs.get(0).getDuration(); });
SearchByTextResponse
sınıfı, bir arama isteğinden gelen yanıtı temsil eder.
Yönlendirme özetlerinin listesine dönmek için SearchByTextResponse.getRoutingSummaries()
numaralı telefonu arayabilirsiniz.
SearchByTextResponse
nesnesi ayrıca şunları da içerir:
- Eşleşen tüm yerleri temsil eden
Place
nesnelerinin listesi (eşleşen her yer için birPlace
nesnesi). - Her
Place
nesnesi yalnızca istekte iletilen alan listesi tarafından tanımlanan alanları içerir.
Yakında Arama'yı kullanma
Bu örnekte, Yakındaki Arama yanıtındaki her bir yere olan seyahat süresini ve mesafeyi hesaplarsınız. Bu örnekte, Avustralya, Sidney'deki restoranlar aranır ve konum kısıtlaması ile rota başlangıç noktası aynı enlem ve boylam koordinatına ayarlanır:
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME); // Define the search area as a 500 meter diameter circle in Sydney, Australia. LatLng center = new LatLng(-33.8688, 151.1957362); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 500); // Define the routing parameters object and pass the routing origin. RoutingParameters routingParameters = RoutingParameters.builder() .setOrigin(toLatLng("-33.8688, 151.1957362")) .build(); // Use the builder to create a SearchNearbyRequest object and pass the routing parameters. // Set setRoutingSummariesIncluded to true. final SearchNearbyRequest searchNearbyRequest = SearchNearbyRequest.builder(/* location restriction = */ circle, placeFields) .setIncludedTypes(includedTypes) .setMaxResultCount(10) .setRoutingParameters(routingParameters) .setRoutingSummariesIncluded(true) .build(); // Call PlacesClient.searchNearby() to perform the search. // Define a response handler to process the returned Lists of Place objects, RoutingSummary objects, and Leg objects. placesClient.searchNearby(searchNearbyRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); List<RoutingSummary> routingSummaries = response.getRoutingSummaries(); List<Leg> legs = routingSummaries.get(0).getLegs(); Duration duration = legs.get(0).getDuration(); });
SearchNearbyResponse
sınıfı, bir arama isteğinden gelen yanıtı temsil eder.
Yönlendirme özetlerinin listesini döndürmek için SearchNearbyResponse.getRoutingSummaries()
çağrısı yapabilirsiniz.
SearchNearbyResponse
nesnesi ayrıca şunları da içerir:
- Eşleşen yer başına bir
Place
nesnesi olmak üzere, eşleşen tüm yerleri temsil edenPlace
nesnelerin listesi. - Her
Place
nesnesi yalnızca istekle iletilen alan listesi tarafından tanımlanan alanları içerir.
Konum kısıtlaması ve yönlendirme kaynağı için aynı koordinatları kullanmanız gerekmez. Örneğin, arama sonuçlarını bu çevreyle kısıtlamak için konum kısıtlamasını Sidney'in merkez noktasına ayarlarsınız. Ancak daha sonra, yol planlama başlangıç noktasını evinizin koordinatlarına, yani arama çemberi içindeki farklı bir konuma ayarlarsınız. Ardından istek, arama sonuçlarını daireye kısıtlar ve rota özetlerini evinizin konumuna göre hesaplar.
Seyahat seçeneklerini belirtin
Süre ve mesafe hesaplamaları varsayılan olarak bir araç için yapılır. Ancak aramada araç türünü ve diğer seçenekleri kontrol edebilirsiniz.
-
Ulaşım modunu
DRIVE
,BICYCLE
,WALK
veyaTWO_WHEELER
olarak ayarlamak içinroutingParameters.setTravelMode()
'ü kullanın. Bu seçenekler hakkında daha fazla bilgi edinmek için Rotalar için kullanılabilir araç türleri bölümüne bakın. -
Yönlendirme tercihi seçeneğini
TRAFFIC_UNAWARE
(varsayılan),TRAFFIC_AWARE
veyaTRAFFIC_AWARE_OPTIMAL
olarak ayarlamak içinroutingParameters.setRoutingPreference()
simgesini kullanın. Her seçeneğin farklı veri kalitesi ve gecikme seviyeleri vardır. Daha fazla bilgi için Trafik verilerinin nasıl ekleneceğini ve eklenip eklenmeyeceğini belirtme bölümünü inceleyin. -
avoidTolls
,avoidHighways
,avoidFerries
veavoidIndoor
belirtmek içinroutingParameters.setRouteModifiers()
kullanın. Bu seçenekler hakkında daha fazla bilgi için Kaçınılacak rota özelliklerini belirtme başlıklı makaleyi inceleyin.
Aşağıdaki örnekte, ulaşım şeklini DRIVE
olarak belirtir ve otoyollardan kaçınılmasını istersiniz:
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME); // Define the routing modifiers object. RouteModifiers routeModifiers = RouteModifiers.builder() .setAvoidHighways(true) .build(); // Define the routing parameters object and pass the routing origin. RoutingParameters routingParameters = RoutingParameters.builder() .setOrigin(toLatLng("-33.8688, 151.1957362")) .setTravelMode(DRIVE) .setRouteModifiers(routeModifiers) .build(); // Use the builder to create a SearchByTextRequest object and pass the routing parameters. // Set setRoutingSummariesIncluded to true. final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food in Sydney, Australia", placeFields) .setMaxResultCount(10) .setRoutingParameters(routingParameters) .setRoutingSummariesIncluded(true) .build(); // Call PlacesClient.searchByText() to perform the search. // Define a response handler to process the returned Lists of Place objects, RoutingSummary objects, and Leg objects. placesClient.searchByText(searchByTextRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); List<RoutingSummary> routingSummaries = result.getRoutingSummaries(); List<Leg> legs = routingSummaries.get(0).getLegs(); Duration duration = legs.get(0).getDuration(); });