חישוב סיכום ניתוב
כדי להשתמש בחיפוש טקסט (חדש) או בחיפוש בקרבת מקום (חדש) כדי לחשב את משך הנסיעה ואת המרחק לכל מקום בתשובה:
-
מעבירים את הפרמטר
RoutingParameters
בבקשה, ומשתמשים ב-setOrigin()
כדי לציין את קואורדינטות קו האורך וקו הרוחב של מקור הניתוב. הפרמטר הזה נדרש כדי לחשב את משך הנסיעה ואת המרחק לכל מקום בתגובה. -
כשיוצרים את אובייקט הבקשה, מוסיפים את
.setRoutingSummariesIncluded(true)
.
שימוש בחיפוש טקסט (חדש)
בבקשה הבאה, מחשבים את משך הנסיעה ואת המרחק לכל מקום בתשובה של Text Search (New):
// 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
מכיל רק את השדות שמוגדרים ברשימת השדות שמועברת בבקשה.
אין צורך להשתמש באותן קואורדינטות להגבלת המיקום ולמקור הניתוב. לדוגמה, אפשר להגדיר את הגבלת המיקומים לנקודת המרכז של סידני כדי להגביל את תוצאות החיפוש למעגל הזה. אבל לאחר מכן מגדירים את נקודת המוצא לניתוב לפי הקואורדינטות של הבית, כלומר למיקום אחר בתוך עיגול החיפוש. לאחר מכן, הבקשה מגבילה את תוצאות החיפוש למעגל ומחשבת את סיכומי המסלולים על סמך המיקום של הבית.
ציון אפשרויות הנסיעה
כברירת מחדל, החישובים של משך הזמן והמרחק הם לרכב. עם זאת, תוכלו לקבוע את סוג הרכב ואפשרויות אחרות בחיפוש.
-
משתמשים ב-
routingParameters.setTravelMode()
כדי להגדיר אתDRIVE
,BICYCLE
,WALK
אוTWO_WHEELER
בתור אופן התחבורה. למידע נוסף על האפשרויות האלה, ראו סוגי כלי רכב זמינים למסלולים. -
משתמשים ב-
routingParameters.setRoutingPreference()
כדי להגדיר את אפשרות העדפת הניתוב ל-TRAFFIC_UNAWARE
(ברירת המחדל), ל-TRAFFIC_AWARE
או ל-TRAFFIC_AWARE_OPTIMAL
. לכל אפשרות יש רמות שונות של איכות נתונים וזמן אחזור. מידע נוסף זמין במאמר הגדרת האופן שבו נתוני התנועה ייכללו, ואם ייכללו. -
אפשר להשתמש ב-
routingParameters.setRouteModifiers()
כדי לציין את הערכיםavoidTolls
,avoidHighways
,avoidFerries
ו-avoidIndoor
. מידע נוסף על האפשרויות האלה זמין במאמר ציון תכונות של מסלולים שרוצים להימנע מהן.
בדוגמה הבאה, מציינים את מצב הנסיעה בתור 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(); });