احتساب ملخّص التوجيه
لاستخدام البحث النصي (ميزة جديدة) أو البحث عن الأماكن المجاورة (ميزة جديدة) لاحتساب مدة الرحلة والمسافة إلى كل مكان في الردّ:
-
نقْل المَعلمة
RoutingParameters
في الطلب، باستخدامsetOrigin()
لتحديد إحداثيات خط العرض وخط الطول لنقطة بدء مسار التوجيه هذه المَعلمة مطلوبة لاحتساب المدة والمسافة إلى كل مكان في الاستجابة. -
عند إنشاء عنصر الطلب، أضِف
.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
إلا على الحقول التي تحدّدها قائمة الحقول التي تم تمريرها في الطلب.
ليس عليك استخدام الإحداثيات نفسها لقيود الموقع الجغرافي و لمصدر التوجيه. على سبيل المثال، يمكنك ضبط قيود المواقع الجغرافية على نقطة مركزية في مدينة القاهرة لحصر نتائج البحث في تلك الدائرة. ولكنّك بعد ذلك ضبطت نقطة تحديد مسار التنقّل على إحداثيات منزلك، أي موقع جغرافي مختلف ضمن دائرة البحث. بعد ذلك، يحصر الطلب نتائج البحث في الدائرة، ويحسب ملخّصات التوجيه استنادًا إلى الموقع الجغرافي لمنزلك.
تحديد خيارات السفر
يتم تلقائيًا احتساب المدة والمسافة للسيارة. ومع ذلك، يمكنك التحكّم في نوع المركبة، بالإضافة إلى خيارات أخرى، في عملية البحث.
-
استخدِم
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(); });