रूटिंग की खास जानकारी का हिसाब लगाना

टेक्स्ट सर्च (नया) या आस-पास की जगहें खोजने की सुविधा (नई) का इस्तेमाल करके, जवाब में हर जगह तक पहुंचने में लगने वाले समय और दूरी का हिसाब लगाने के लिए:

  1. रूटिंग ऑरिजिन के अक्षांश और देशांतर निर्देशांक बताने के लिए, setOrigin() का इस्तेमाल करके, अनुरोध में RoutingParameters पैरामीटर पास करें. जवाब में, हर जगह के लिए समय और दूरी का हिसाब लगाने के लिए, यह पैरामीटर ज़रूरी है.

  2. अनुरोध ऑब्जेक्ट बनाते समय, .setRoutingSummariesIncluded(true) जोड़ें.

टेक्स्ट से खोजने की सुविधा का इस्तेमाल करना (नया)

नीचे दिए गए अनुरोध में, टेक्स्ट सर्च (नया) के जवाब में, हर जगह के लिए यात्रा में लगने वाले समय और दूरी का हिसाब लगाया जाता है:

// 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 क्लास, खोज अनुरोध के जवाब को दिखाती है. रूटिंग की खास जानकारी वाली सूची देखने के लिए, SearchByTextResponse.getRoutingSummaries() को कॉल किया जा सकता है. SearchByTextResponse ऑब्जेक्ट में ये भी शामिल हैं:

  • Place ऑब्जेक्ट की सूची, जो मिलती-जुलती सभी जगहें दिखाती है. इसमें, मिलती-जुलती हर जगह के लिए एक Place ऑब्जेक्ट है.
  • हर Place ऑब्जेक्ट में सिर्फ़ वे फ़ील्ड होते हैं जो अनुरोध में दी गई फ़ील्ड सूची में बताए गए हैं.

इस उदाहरण में, आपने आस-पास खोज के नतीजे दिखाने वाली सुविधा में हर जगह की यात्रा में लगने वाला समय और दूरी को कैलकुलेट किया है. इस उदाहरण में, ऑस्ट्रेलिया के सिडनी में रेस्टोरेंट खोजे जा रहे हैं. साथ ही, जगह की पाबंदी और रूटिंग की शुरुआत को एक ही अक्षांश और देशांतर निर्देशांक पर सेट किया गया है:

// 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 क्लास, खोज अनुरोध के जवाब को दिखाती है. रूटिंग की खास जानकारी वाली सूची देखने के लिए, SearchNearbyResponse.getRoutingSummaries() को कॉल किया जा सकता है. SearchNearbyResponse ऑब्जेक्ट में ये भी शामिल होते हैं:

  • Place ऑब्जेक्ट की सूची, जो मैच होने वाली सभी जगहों को दिखाती है. इसमें हर मैच होने वाली जगह के लिए एक Place ऑब्जेक्ट होता है.
  • हर Place ऑब्जेक्ट में सिर्फ़ वे फ़ील्ड होते हैं जिन्हें अनुरोध में भेजी गई फ़ील्ड सूची के हिसाब से तय किया गया है.

आपको जगह की पाबंदी और रूटिंग ऑरिजिन के लिए, एक ही निर्देशांक का इस्तेमाल करने की ज़रूरत नहीं है. उदाहरण के लिए, आपने सिडनी के सेंटर पॉइंट पर जगह की पाबंदी सेट की है, ताकि खोज के नतीजों को उस सर्कल तक सीमित किया जा सके. हालांकि, इसके बाद आपने अपने घर के निर्देशांक पर, राइटिंग ऑरिजिन सेट किया. इसका मतलब है कि आपने खोज सर्कल में किसी दूसरी जगह पर राइटिंग ऑरिजिन सेट किया. इसके बाद अनुरोध, खोज के नतीजों को सर्कल में शामिल करता है और आपके घर की जगह के आधार पर रूटिंग की खास जानकारी को कैलकुलेट करता है.

यात्रा के विकल्पों की जानकारी देना

डिफ़ॉल्ट रूप से, यात्रा में लगने वाले समय और दूरी का हिसाब कार के लिए लगाया जाता है. हालांकि, खोज के नतीजों में वाहन के टाइप के साथ-साथ अन्य विकल्पों को भी कंट्रोल किया जा सकता है.

अगले उदाहरण में, यात्रा के मोड के तौर पर DRIVE और राजमार्गों से बचने के लिए, यह जानकारी दी गई है:

// 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();
    });