จัดการจุดอ้างอิง

เอกสารนี้อธิบายวิธีจัดการค่ากำหนดจุดอ้างอิงสำหรับแอป โดยใช้ 2 ฟีเจอร์ต่อไปนี้

  • ค่ากำหนดการกำหนดเส้นทางด้านข้างของถนน
  • การแวะพัก

ตั้งค่ากำหนดการกำหนดเส้นทางด้านข้างของถนน

โดยค่าเริ่มต้น Navigation SDK สำหรับ iOS จะค้นหาเส้นทางที่เร็วที่สุดไปยัง จุดแวะพัก แต่ไม่ได้เป็นการรับประกันว่าผู้ใช้จะไปถึง ฝั่งถนนที่ต้องการ เช่น ฝั่งถนนที่ลูกค้าของคนขับ บริการร่วมเดินทางรออยู่ ฟีเจอร์การกำหนดเส้นทางตามข้างถนน ช่วยให้คุณมั่นใจได้ว่ายานพาหนะจะมาถึงข้างถนนที่ถูกต้อง

วิธีการทำงาน

คุณตั้งค่ากำหนดสำหรับการมาถึงถนนฝั่งใดฝั่งหนึ่งเมื่อ สร้างจุดแวะพักสำหรับป้ายหยุดนั้น คุณระบุค่ากำหนดได้ 2 วิธี

ต้องการใช้ถนนฝั่งเดียวกัน

คุณระบุพิกัดทางภูมิศาสตร์ของจุดแวะพัก แล้วตั้งค่า Flag preferSameSideOfRoad ซึ่งระบุว่าคุณต้องการไปถึงจุดแวะพักที่ฝั่งเดียวกับถนน โดยจะปรับให้ตรงกับทางเท้าที่ใกล้ที่สุด

(nullable instancetype)initWithLocation:(CLLocationCoordinate2D)location
                                  title:(NSString *)title
                   preferSameSideOfRoad:(BOOL)preferSameSideOfRoad;

ตั้งค่าทิศทางการมาถึง

คุณระบุพิกัดทางภูมิศาสตร์ของจุดอ้างอิง จากนั้นระบุ ทิศทางขาเข้า preferredSegmentHeading ที่ตรงกับทิศทางการจราจรบนถนนฝั่งเดียวกับ จุดหมาย

(nullable instancetype)initWithLocation:(CLLocationCoordinate2D)location
                                  title:(NSString *)title
                preferredSegmentHeading:(int32_t)preferredSegmentHeading;

Navigation SDK จะเลือกส่วนของถนนที่ใกล้จุดอ้างอิงมากที่สุด ซึ่งมีทิศทางของเลนที่สอดคล้อง (ภายใน +/- 55 องศา) กับด้านข้างของถนนที่จุดอ้างอิงอยู่

ตั้งค่ากำหนดการแวะพัก

ในบางสถานที่ ผู้ใช้จะหยุดอย่างปลอดภัยไม่ได้ (เช่น พื้นที่สูง เรือข้ามฟาก สถานที่ใต้ดิน และพื้นที่อื่นๆ ที่มีการจำกัด การเข้าถึง) ฟีเจอร์แวะพักจะย้ายจุดอ้างอิงไปยังสถานที่ใกล้เคียงหาก ตำแหน่งไม่เหมาะสำหรับผู้ใช้ที่จะแวะพัก เมื่อตั้งค่า vehicleStopoverเป็น YES ระบบจะย้ายจุดอ้างอิงโดยอัตโนมัติเมื่อ คำนวณเส้นทาง หากมีตำแหน่งอื่น

วิธีการทำงาน

คุณตั้งค่ากำหนดสำหรับการแวะพักเมื่อสร้างจุดอ้างอิงสำหรับการหยุดนั้น โดยตั้งค่ากำหนดสำหรับแวะพักในGMSNavigationMutableWaypoint ดังตัวอย่างต่อไปนี้

Swift

let location = CLLocationCoordinate2D(latitude: 47.67, longitude: -122.20)
let waypoint = GMSNavigationMutableWaypoint(location: location, title: "waypoint from location")!
waypoint.vehicleStopover = true
mapView.navigator?.setDestinations([waypoint], routingOptions: routingOptions, callback: {...})

Objective-C

CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationMutableWaypoint *waypoint =
    [[GMSNavigationMutableWaypoint alloc] initWithLocation:location
                                                     title:@"waypoint from location"];
waypoint.vehicleStopover = YES;
[_mapView.navigator setDestinations:@[waypoint1]
                     routingOptions:routingOptions
                           callback:^(GMSRouteStatus routeStatus){...}];