ก่อนใช้ Location Selection API เพื่อค้นหาจุดรับผู้โดยสารสำหรับการเดินทางด้วยบริการเรียกรถ ให้ทำตามวิธีการ ผสานรวมกับไลบรารีของไคลเอ็นต์
บริการ Location Selection มี API 3 รายการสำหรับการเลือกจุดรับและจุดส่ง ได้แก่ FindNearbyPlaces, FindPickupPointsForPlace และ FindPickupPointsForLocation
ใช้ FindNearbyPlaces เพื่อดึงข้อมูลสถานที่ใกล้กับสถานที่ค้นหาหรือตำแหน่งของอุปกรณ์ ระบบจะจัดอันดับสถานที่ตามความใกล้เคียงกับสถานที่และตามความโดดเด่นของสถานที่สำหรับการเดินทางด้วยบริการเรียกรถ FindNearbyPlaces จะแสดงรายการสถานที่ที่สามารถแสดงเพื่อให้ผู้ใช้เลือกสถานที่ที่ดีที่สุด เมื่อเลือกสถานที่แล้ว ให้ใช้ FindPickupPointsForPlace เพื่อดึงข้อมูลจุดรับของสถานที่ที่เลือก
ใช้ FindPickupPointsForLocation เพื่อดึงข้อมูล Places และจุดรับที่เชื่อมโยงกับสถานที่นั้นๆ ใกล้กับสถานที่ค้นหาหรือตำแหน่งของอุปกรณ์ในการเรียก RPC เดียวกัน
จุดรับแต่ละจุดจะเชื่อมโยงกับสถานที่ ระบบจะจัดอันดับจุดรับตามความใกล้เคียงกับสถานที่และตามความโดดเด่นของจุดรับสำหรับการเดินทางด้วยบริการร่วมเดินทาง โปรดทราบว่าระบบจะจัดลำดับจุดรับของสถานที่หลายแห่งไว้ด้วยกัน FindPickupPointsForLocation รวม FindNearbyPlaces และ FindPickupPointsForPlace เข้าด้วยกัน เช่น สมมติว่าสถานที่ค้นหาอยู่ใกล้กับสถานที่ P1, P2 และ P3 หากจุดรับที่ดีที่สุด T1 เชื่อมโยงกับสถานที่ P2 และจุดรับที่ดีที่สุดถัดไปเชื่อมโยงกับสถานที่ P1 ผลลัพธ์จะมีลำดับเป็น [T1:P2, T2:P1, ...]
การจัดอันดับจุดรับจะขึ้นอยู่กับเกณฑ์ที่ระบุไว้ในคำขอ ดูข้อมูลเพิ่มเติมได้ที่ การเพิ่มประสิทธิภาพจุดรับสำหรับการเดินทางหลายครั้ง
ค้นหาตามสถานที่ตั้ง
หากต้องการแสดงสถานที่ให้ผู้ใช้ดูก่อนที่จะเลือกจุดรับ หรือแสดงสถานที่ใกล้เคียงโดยการลากหมุด ให้ใช้การเรียก RPC ต่อไปนี้
FindNearbyPlacesRequest find_nearby_places_request =
FindNearbyPlacesRequest.newBuilder()
.setLocalizationPreferences(LocalizationPreferences.newBuilder()
// Language used for localizing text such as name or address.
.setLanguageCode("en")
.setRegionCode("US")
.build())
// Rider's location or location of dragged pin.
.setSearchLocation(LatLng.newBuilder().setLatitude(37.365647).setLongitude(-121.925356))
// Number of places requested.
.setMaxResults(3)
.build();
FindNearbyPlacesResponse findNearbyPlacesResponse =
locationSelectionBetaClient.findNearbyPlaces(find_nearby_places_request);
การเรียก RPC จะแสดงรายการคำตอบของสถานที่ที่จัดอันดับแล้วซึ่งเป็นไปตามเกณฑ์ที่ป้อน โดยจัดลำดับตามความใกล้เคียงและความโดดเด่นรวมกัน คุณสามารถให้ผู้โดยสารเลือกร้านค้าหรือใช้ผลการค้นหาแรกแล้วไปยังการเลือกจุดรับได้ คำตอบของสถานที่แต่ละรายการจะมี place_id ที่ไม่ซ้ำกัน ซึ่งสามารถใช้ใน FindPickupPointsForPlaceRequest เพื่อดึงข้อมูลจุดรับได้ ดูข้อมูลเพิ่มเติมได้ที่
ดู ค้นหาตามรหัสสถานที่
FindPickupPointsForLocationRequest FindPickupPointsForLocationRequest =
FindPickupPointsForLocationRequest.newBuilder()
// Language used for localizing text such as name and address.
.setLocalizationPreferences(LocalizationPreferences.newBuilder().setRegionCode("US").setLanguageCode("en"))
// The search location of the rider or the dropped pin.
.setSearchLocation(LatLng.newBuilder().setLatitude(-23.482049).setLongitude(-46.602135))
// The max results returned.
.setMaxResults(5)
// List of travel modes. At least one of the travel modes must be supported by the pickup points.
.addTravelModes(TravelMode.DRIVING)
// Specifies the sorting order of matching pickup points.
.setOrderBy(PickupPointOrder.DISTANCE_FROM_SEARCH_LOCATION)
.build();
FindPickupPointsForLocationResponse FindPickupPointsForLocationResponse =
locationSelectionService.FindPickupPointsForLocation(
RpcClientContext.create(), FindPickupPointsForLocationRequest);
การเรียก RPC จะแสดงรายการจุดรับที่จัดอันดับแล้วซึ่งเป็นไปตามเกณฑ์ที่ป้อน โดยจัดลำดับตามความใกล้เคียงและความโดดเด่นรวมกัน การเรียก RPC นี้รวม FindNearbyPlaces และ FindPickupPointsForPlaceRequest เข้าด้วยกัน และสามารถใช้แทนการรวมการเรียกอื่นๆ 2 รายการได้
ค้นหาตามรหัสสถานที่
คุณสามารถรับ place_id ได้โดยใช้ FindNearbyPlaces หรือใช้บริการ Places API Autocomplete จากนั้นใช้การเรียก RPC ต่อไปนี้เพื่อแสดงจุดรับที่เหมาะสมที่สุดสำหรับสถานที่ที่ระบุ
FindPickupPointsForPlaceRequest findPickupPointsForPlaceRequest =
FindPickupPointsForPlaceRequest.newBuilder()
// Language used for localizing text such as name and address.
.setLocalizationPreferences(LocalizationPreferences.newBuilder().setRegionCode("US").setLanguageCode("en"))
// Place ID of the place for which pickup points are being fetched;
// for example, Hilton Hotel, Downtown San Jose.
.setPlaceId("ChIJwTUa-q_Mj4ARff4yludGH-M")
// List of travel modes. At least one of the travel modes must be supported by the pickup points.
.addTravelModes(TravelMode.DRIVING)
// Rider's location or location of dragged pin.
// It is recommended to use the same location that was used in `FindNearbyPlaces` for better quality.
.setSearchLocation(LatLng.newBuilder().setLatitude(37.329472).setLongitude(-121.890449))
.setOrderBy(PickupPointOrder.DISTANCE_FROM_SEARCH_LOCATION)
.setMaxResults(5)
.build();
FindPickupPointsForPlaceResponse findPickupPointsForPlaceResponse =
locationSelectionBetaClient.findPickupPointsForPlace(findPickupPointsForPlaceRequest);
FindPickupPointsForPlace จะแสดง PickupPointResponses พร้อมละติจูดและลองจิจูดสำหรับจุดที่รับผู้โดยสารได้
เพิ่มประสิทธิภาพจุดรับสำหรับการเดินทางหลายครั้ง
สำหรับการเดินทางด้วยบริการเรียกรถแบบแชร์หรือแบบต่อเนื่อง FindPickupPointsForPlace รองรับการจัดลำดับจุดรับตาม DRIVING_ETA_FROM_PICKUP_POINT_TO_DESTINATION ซึ่งช่วยให้คุณแสดงจุดรับสำหรับการเดินทางครั้งถัดไปที่เพิ่มประสิทธิภาพด้วยเส้นทางการเดินทางปัจจุบันของผู้ขับได้
ตัวอย่าง
FindPickupPointsForPlaceRequest findPickupPointsForPlaceRequest =
FindPickupPointsForPlaceRequest.newBuilder()
// Language used for localizing text such as name and address.
.setLocalizationPreferences(LocalizationPreferences.newBuilder().setRegionCode("US").setLanguageCode("en"))
// Place ID of the place for which pickup points are being fetched;
// for example, Hilton Hotel, Downtown San Jose.
.setPlaceId("ChIJwTUa-q_Mj4ARff4yludGH-M")
// List of travel modes. At least one of the travel modes must be supported by the pickup points.
.addTravelModes(TravelMode.DRIVING)
// Second rider's location or location of dragged pin.
.setSearchLocation(LatLng.newBuilder().setLatitude(37.329472).setLongitude(-121.890449))
// Location of the driver's next drop off after picking up the second
// rider. Note, it is not necessarily the second rider's destination.
.setDestination(LatLng.newBuilder().setLatitude(37.329472).setLongitude(-121.890449))
.setOrderBy(PickupPointOrder.DRIVING_ETA_FROM_PICKUP_POINT_TO_DESTINATION)
.setComputeDrivingEta(true)
.setMaxResults(5)
.build();
FindPickupPointsForPlaceResponse findPickupPointsForPlaceResponse =
locationSelectionBetaClient.findPickupPointsForPlace(findPickupPointsForPlaceRequest);
แสดงโครงร่าง อาคาร ทางเข้า และทางออก
ภายในข้อความตอบกลับของ Place Proto
associatedCompounds
จะระบุคอมเพล็กซ์ที่เชื่อมโยงกับสถานที่ ข้อความคอมเพล็กซ์มีข้อมูล 3 ประเภท ได้แก่
- ประเภทคอมเพล็กซ์ - 1 ใน 4 ตัวเลือก
compoundBuilding- อาคารเดี่ยวๆ เช่น ห้างสรรพสินค้าหรือ ซูเปอร์มาร์เก็ตcompoundSection- คอมเพล็กซ์ภายในคอมเพล็กซ์ขนาดใหญ่กว่า เช่น ร้านค้าเดียวในห้างสรรพสินค้าcompoundGrounds- ทุกอย่างที่เชื่อมโยงกับcompoundBuildingเช่น ห้างสรรพสินค้า ลานจอดรถ และอาคารอื่นๆ ภายในลานจอดรถนั้นunrecognized- ค่าเริ่มต้น
- เรขาคณิต - พิกัดของรูปหลายเหลี่ยมที่ระบุโครงร่าง ซึ่งจัดเก็บไว้ในโครงสร้าง GeoJSON ในช่อง
displayBoundaryระบบจะใช้พิกัดเหล่านี้เพื่อสร้างโครงร่างของส่วน อาคาร หรือพื้นที่ - ทางเข้า - พิกัดละติจูดและลองจิจูดของทางเข้าและทางออกทั้งหมด
Location Selection จะแสดงคอมเพล็กซ์ประเภทใดก็ตามที่เชื่อมโยงกับสถานที่ค้นหา หากสถานที่ค้นหาอยู่ในร้านค้าแห่งหนึ่งใน ห้างสรรพสินค้า Location Selection จะแสดง: * ร้านค้าที่เฉพาะเจาะจง ทางเข้าและทางออกของร้านค้า รวมถึงโครงร่างของร้านค้า * อาคารคอมเพล็กซ์ (ห้างสรรพสินค้า) ทางเข้าและทางออก รวมถึงโครงร่างของห้างสรรพสินค้า * พื้นที่คอมเพล็กซ์ (ห้างสรรพสินค้า + ลานจอดรถ) ทางเข้าและทางออก รวมถึงโครงร่างของพื้นที่ทั้งหมด
รูปภาพนี้แสดงคอมเพล็กซ์ทั้ง 3 ประเภทที่ระบบแสดง

รูปภาพนี้แสดงสถานที่หลายแห่งภายในสนามบิน พร้อมขอบเขตของทั้งอาคารภายในสนามบินและขอบเขตของสนามบินและพื้นที่ทั้งหมดที่เกี่ยวข้อง
