เมื่อใช้ Navigation SDK สําหรับ iOS คุณจะปรับเปลี่ยนประสบการณ์ของผู้ใช้กับแผนที่ได้โดยการกําหนดตัวควบคุมและองค์ประกอบ UI ในตัวที่จะปรากฏบนแผนที่ รวมถึงท่าทางสัมผัสที่คุณอนุญาต นอกจากนี้ คุณยังแก้ไขลักษณะที่ปรากฏของ UI การนำทางได้ด้วย ดูหลักเกณฑ์เกี่ยวกับการแก้ไข UI การนําทางที่ยอมรับได้ที่หน้านโยบาย
ตัวควบคุม UI ของแผนที่
Navigation SDK มีการควบคุม UI ในตัวบางอย่างซึ่งคล้ายกับการควบคุมที่มีในแอปพลิเคชัน Google Maps สำหรับ iOS คุณสลับการแสดงผลของการควบคุมเหล่านี้ได้โดยใช้คลาส GMSUISettings
การเปลี่ยนแปลงที่คุณทำในชั้นนี้จะแสดงในแผนที่ทันที
เข็มทิศ
Navigation SDK มีกราฟิกเข็มทิศซึ่งจะปรากฏที่มุมขวาบนของแผนที่ในบางกรณีและเมื่อเปิดใช้เท่านั้น เข็มทิศจะปรากฏขึ้นก็ต่อเมื่อกล้องหันไปในทิศทางที่มีทิศทางอื่นที่ไม่ใช่ทิศเหนือ (ทิศทางที่ไม่ใช่ 0) เมื่อผู้ใช้คลิกเข็มทิศ กล้องจะเคลื่อนไหวกลับไปยังตำแหน่งที่มีทิศทางเป็น 0 (การวางแนวเริ่มต้น) และเข็มทิศจะค่อยๆ หายไปหลังจากนั้นไม่นาน
หากเปิดใช้การนำทางและตั้งค่าโหมดกล้องเป็น "ติดตาม" เข็มทิศจะยังคงปรากฏอยู่ และการแตะเข็มทิศจะสลับระหว่างมุมมองกล้องแบบเอียงและแบบภาพรวม
เข็มทิศจะปิดอยู่โดยค่าเริ่มต้น คุณเปิดใช้เข็มทิศได้โดยตั้งค่าพร็อพเพอร์ตี้ compassButton
ของ GMSUISettings
เป็น true
แต่คุณไม่สามารถบังคับให้เข็มทิศแสดงอยู่เสมอได้
mapView.settings.compassButton = true
mapView.settings.compassButton = YES;
ปุ่มตำแหน่งของฉัน
ปุ่มตำแหน่งของฉันจะปรากฏที่มุมขวาล่างของหน้าจอเฉพาะเมื่อเปิดใช้ปุ่มตำแหน่งของฉัน เมื่อผู้ใช้คลิกปุ่ม กล้องจะเคลื่อนไหวเพื่อโฟกัสที่ตำแหน่งปัจจุบันของผู้ใช้ หากระบบทราบตำแหน่งของผู้ใช้ในขณะนั้น คุณเปิดใช้ปุ่มได้โดยการตั้งค่าพร็อพเพอร์ตี้ myLocationButton
ของ GMSUISettings
เป็น true
mapView.settings.myLocationButton = true
mapView.settings.myLocationButton = YES;
ปุ่มปรับศูนย์กลาง
เมื่อเปิดใช้การนําทาง ปุ่ม "จัดกึ่งกลางใหม่" จะปรากฏขึ้นเมื่อผู้ใช้เลื่อนมุมมองแผนที่ และหายไปเมื่อผู้ใช้แตะเพื่อจัดกึ่งกลางแผนที่ใหม่ หากต้องการอนุญาตให้ปุ่ม "จัดกึ่งกลางใหม่" ปรากฏขึ้น ให้ตั้งค่าพร็อพเพอร์ตี้ recenterButtonEnabled
ของ GMSUISettings
เป็น true
หากไม่ต้องการให้ปุ่ม "จัดตำแหน่งใหม่ล่าสุด" ปรากฏขึ้น ให้ตั้งค่า recenterButtonEnabled
เป็น false
mapView.settings.isRecenterButtonEnabled = true
mapView.settings.recenterButtonEnabled = YES;
อุปกรณ์เสริม UI ของแผนที่
Navigation SDK มีอุปกรณ์เสริม UI ที่ปรากฏขึ้นระหว่างการนําทาง ซึ่งคล้ายกับอุปกรณ์เสริมที่พบในแอปพลิเคชัน Google Maps สําหรับ iOS คุณสามารถปรับระดับการมองเห็นหรือลักษณะที่ปรากฏของตัวควบคุมเหล่านี้ได้ตามที่อธิบายไว้ในส่วนนี้ การเปลี่ยนแปลงที่คุณทำที่นี่จะแสดงในการเดินทางครั้งถัดไปของผู้ใช้
ส่วนหัวและส่วนท้ายของการนําทาง
ในระหว่างการนําทาง ส่วนหัวการนําทางจะปรากฏที่ด้านบนของหน้าจอ ส่วนท้ายการนําทางจะปรากฏที่ด้านล่าง ส่วนหัวการนำทางจะแสดงชื่อถนนและทิศทางสำหรับการเลี้ยวถัดไปบนเส้นทาง รวมถึงทิศทางของการเลี้ยวถัดไป ส่วนท้ายของการนําทางจะแสดงเวลาและระยะทางโดยประมาณไปยังจุดหมาย รวมถึงเวลาถึงโดยประมาณ
คุณสลับการแสดงผลส่วนหัวและส่วนท้ายการนําทาง รวมถึงตั้งค่าสีแบบเป็นโปรแกรมได้โดยใช้พร็อพเพอร์ตี้ต่อไปนี้
navigationHeaderEnabled
— ควบคุมว่าส่วนหัวการนําทางจะแสดงหรือไม่ (ค่าเริ่มต้นคือtrue
)navigationFooterEnabled
— ควบคุมว่าส่วนท้ายการนําทางจะแสดงหรือไม่ (ค่าเริ่มต้นคือtrue
)navigationHeaderPrimaryBackgroundColor
— กําหนดสีพื้นหลังหลักสําหรับส่วนหัวการนําทางnavigationHeaderSecondaryBackgroundColor
— กําหนดสีพื้นหลังรองสําหรับส่วนหัวการนําทาง
ตัวอย่างโค้ดต่อไปนี้แสดงการเปิดการแสดงผลสําหรับส่วนหัวและส่วนท้าย จากนั้นตั้งค่า navigationHeaderPrimaryBackgroundColor
เป็นสีน้ำเงิน และ navigationHeaderSecondaryBackgroundColor
เป็นสีแดง
mapView.settings.isNavigationHeaderEnabled = true
mapView.settings.isNavigationFooterEnabled = true
mapView.settings.navigationHeaderPrimaryBackgroundColor = .blue
mapView.settings.navigationHeaderSecondaryBackgroundColor = .red
mapView.settings.navigationHeaderEnabled = YES;
mapView.settings.navigationFooterEnabled = YES;
mapView.settings.navigationHeaderPrimaryBackgroundColor = [UIColor blueColor];
mapView.settings.navigationHeaderSecondaryBackgroundColor = [UIColor redColor];
มุมมองส่วนหัวของอุปกรณ์เสริมการนำทาง
คุณสามารถปรับแต่งแอปได้โดยแทนที่มุมมองส่วนหัวการนำทางรองด้วยมุมมองอุปกรณ์เสริมที่กําหนดเอง โดยสร้างมุมมองที่ใช้โปรโตคอล GMSNavigationAccessoryView
โปรโตคอลนี้มีเมธอดที่จําเป็น 1 รายการ ได้แก่ -heightForAccessoryViewConstrainedToSize:onMapView:
คุณจะได้รับขนาดสูงสุดที่ใช้ได้สำหรับมุมมองใน mapView ที่ระบุ และจะต้องระบุความสูงที่มุมมองของคุณต้องใช้
จากนั้นคุณสามารถส่งมุมมองนี้ไปยัง mapView ได้โดยเรียกใช้ setHeaderAccessoryView:
mapView จะแสดงภาพเคลื่อนไหวของมุมมองปัจจุบัน แล้วแสดงภาพเคลื่อนไหวของมุมมองที่กําหนดเอง ส่วนหัวการนําทางต้องมองเห็นได้เพื่อให้ข้อมูลพร็อพเพอร์ตี้ที่กําหนดเองแสดง
หากต้องการนำมุมมองอุปกรณ์เสริมส่วนหัวที่กำหนดเองออก ให้ส่ง nil
ไปยัง
setHeaderAccessoryView:
หากต้องเปลี่ยนขนาดมุมมองได้ทุกเมื่อ คุณสามารถเรียกใช้ invalidateLayoutForAccessoryView:
โดยส่งมุมมองที่ต้องเปลี่ยนขนาด
ตัวอย่าง
ตัวอย่างโค้ดต่อไปนี้แสดงมุมมองที่กําหนดเองซึ่งใช้โปรโตคอล GMSNavigationAccessoryView
จากนั้นระบบจะใช้มุมมองที่กำหนดเองนี้เพื่อตั้งค่ามุมมองอุปกรณ์เสริมส่วนหัวการนำทางที่กำหนดเอง
class MyCustomView: UIView, GMSNavigationAccessoryView {
…
func heightForAccessoryViewConstrained(to size: CGSize, on mapView: GMSMapView) -> CGFloat {
// viewHeight gets calculated as the height your view needs.
return viewHeight
}
…
}
let customView = MyCustomView(...)
mapView.setHeaderAccessory(customView)
// At some later point customView changes size.
mapView.invalidateLayout(forAccessoryView: customView)
// Remove the custom header accessory view.
mapView.setHeaderAccessory(nil)
@interface MyCustomView : UIView <GMSNavigationAccessoryView>
…
@end
@implementation MyCustomView
…
- (CGFloat)heightForAccessoryViewConstrainedToSize:(CGSize)size onMapView:(GMSMapView *)mapView {
// viewHeight gets calculated as the height your view needs.
return viewHeight;
}
…
@end
MyCustomView *customView = [[MyCustomView alloc] init…];
[_mapView setHeaderAccessoryView:customView];
// At some later point customView changes size.
[_mapView invalidateLayoutForAccessoryView:customView];
// Remove the custom header accessory view.
[_mapView setHeaderAccessoryView:nil];
รายการเส้นทาง
คุณสามารถระบุวิธีการแบบทีละขั้นตอนในแอปได้ ตัวอย่างต่อไปนี้แสดงวิธีหนึ่งในการทำเช่นนั้น ขั้นตอนเหล่านี้อาจแตกต่างกันไปตามการติดตั้งใช้งานของคุณ
- เปิดใช้ปุ่มจุดแรกเข้าหลังจากที่
setDestinations
ในGMSNavigator
(Navigator) เสร็จสมบูรณ์และเปิดใช้guidanceActive
ใน Navigator แล้ว - เมื่อผู้ใช้แตะปุ่มจุดแรก ให้สร้าง
GMSNavigationDirectionsListController
(ตัวควบคุม) ที่มีโปรแกรมนำทางซึ่งเชื่อมโยงกับGMSMapView
(mapView
) - เพิ่มตัวควบคุมลงในอินสแตนซ์ของ
UIViewController
(ตัวควบคุมมุมมอง) และเพิ่มdirectionsListView
เป็นมุมมองย่อยของตัวควบคุมมุมมอง ควรเรียกใช้เมธอดreloadData
และinvalidateLayout
ในคอนโทรลเลอร์เช่นเดียวกับที่ใช้กับUICollectionView
- พุชวิดเจ็ตควบคุมการแสดงผลไปยังลําดับชั้นวิดเจ็ตควบคุมการแสดงผลของแอป
ตัวอย่างโค้ดต่อไปนี้แสดงการเพิ่ม DirectionsListViewController
override func viewDidLoad() {
super.viewDidLoad()
// Add the directionsListView to the host view controller's view.
let directionsListView = directionsListController.directionsListView
directionsListView.frame = self.view.frame
self.view.addSubview(directionsListView)
directionsListView.translatesAutoresizingMaskIntoConstraints = false
directionsListView.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true
directionsListView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor).isActive = true
directionsListView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor).isActive = true
directionsListView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true
...
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// Ensure data is fresh when the view appears.
directionsListController.reloadData()
...
}
override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {
super.willTransition(to: newCollection, with: coordinator)
// Invalidate the layout during rotation.
coordinator.animate(alongsideTransition: {_ in
self.directionsListController.invalidateLayout()
})
...
}
- (void)viewDidLoad {
[super viewDidLoad];
// Add the directionsListView to the host view controller's view.
UIView *directionsListView = _directionsListController.directionsListView;
directionsListView.frame = self.view.bounds;
[self.view addSubview:directionsListView];
directionsListView.translatesAutoresizingMaskIntoConstraints = NO;
[directionsListView.topAnchor constraintEqualToAnchor:self.view.topAnchor].active = YES;
[directionsListView.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor].active = YES;
[directionsListView.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor].active = YES;
[directionsListView.bottomAnchor constraintEqualToAnchor:self.view.bottomAnchor].active = YES;
...
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
// Ensure data is fresh when the view appears.
[_directionsListController reloadData];
...
}
- (void)willTransitionToTraitCollection:(UITraitCollection *)newCollection
withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
[super willTransitionToTraitCollection:newCollection withTransitionCoordinator:coordinator];
void(^animationBlock)(id <UIViewControllerTransitionCoordinatorContext>context) =
^void(id <UIViewControllerTransitionCoordinatorContext>context) {
[_directionsListController invalidateLayout];
};
// Invalidate the layout during rotation.
[coordinator animateAlongsideTransition:animationBlock
completion:nil];
...
}
...
แถบความคืบหน้าของการเดินทาง
แถบความคืบหน้าของการเดินทางคือแถบแนวตั้งที่ปรากฏขึ้นที่ด้านเริ่มต้น/ด้านนำของแผนที่เมื่อการนําทางเริ่มต้น เมื่อเปิดใช้ ฟีเจอร์นี้จะแสดงภาพรวมของการเดินทางทั้งหมด พร้อมกับจุดหมายและตำแหน่งปัจจุบันของผู้ใช้
ซึ่งช่วยให้ผู้ใช้คาดการณ์ปัญหาที่จะเกิดขึ้นได้อย่างรวดเร็ว เช่น การเข้าชม โดยไม่ต้องซูมเข้า จากนั้นจึงกำหนดเส้นทางใหม่ได้หากจำเป็น หากผู้ใช้เปลี่ยนเส้นทางการเดินทาง แถบความคืบหน้าจะรีเซ็ตราวกับว่าการเดินทางใหม่เริ่มต้นจากจุดนั้น
แถบความคืบหน้าของการเดินทางจะแสดงตัวบ่งชี้สถานะต่อไปนี้
สถานะการจราจร - สถานะของการจราจรที่กําลังจะเกิดขึ้น
ตำแหน่งปัจจุบัน - ตำแหน่งปัจจุบันของคนขับในการเดินทาง
เวลาที่ใช้ไปบนเส้นทาง - ระยะเวลาที่ใช้ไปของการเดินทาง
เปิดใช้แถบความคืบหน้าของการเดินทางโดยการตั้งค่าnavigationTripProgressBarEnabled
พร็อพเพอร์ตี้ใน GMSUISettings
mapView.settings.isNavigationTripProgressBarEnabled = true
mapView.settings.navigationTripProgressBarEnabled = YES;
ตำแหน่งแถบความคืบหน้าของการเดินทาง
- ด้านซ้ายของแถบจะสอดคล้องกับด้านซ้ายของเครื่องวัดความเร็ว โลโก้ Google และปุ่ม "จัดกึ่งกลางใหม่" (หากมองเห็น) โดยประมาณ ความกว้างคือ 12 pt
- แถบความคืบหน้าของการเดินทางจะตอบสนองต่อพื้นที่แนวตั้งบนหน้าจอแบบไดนามิก ด้านล่างของแถบอยู่ห่างจากด้านล่างของหน้าจอ 210 พารามิเตอร์ ด้านบนของแถบความคืบหน้าของการเดินทางต้องอยู่ห่างจากด้านบนของหน้าจออย่างน้อย 170 pt โดยความสูงสูงสุดของแถบคือ 400 pt
- หากแถบความคืบหน้าของการเดินทางซ้อนทับกับการ์ดเลี้ยวหรือองค์ประกอบ UI การนำทางอื่นๆ แถบดังกล่าวจะปรากฏใต้องค์ประกอบอื่นๆ เหล่านั้น
Prompt Visibility API (เวอร์ชันทดลอง)
Prompt Visibility API ช่วยให้คุณหลีกเลี่ยงความขัดแย้งระหว่างองค์ประกอบ UI ที่ Navigation SDK สร้างขึ้นกับองค์ประกอบ UI ที่กําหนดเองของคุณได้โดยการเพิ่ม Listener เพื่อรับการเรียกกลับก่อนที่องค์ประกอบ UI ของ Navigation SDK กำลังจะปรากฏขึ้นและทันทีที่นําองค์ประกอบออก ดูข้อมูลเพิ่มเติม รวมถึงตัวอย่างโค้ดได้ที่ส่วน Prompt Visibility API ของหน้ากําหนดค่าการหยุดชะงักแบบเรียลไทม์
สัญญาณไฟจราจรและป้ายหยุด
คุณสามารถเปิดใช้การแสดงไฟจราจรและป้ายหยุดระหว่างการนำทางที่ใช้งานอยู่ได้ใน mapView
ซึ่งจะให้บริบทเพิ่มเติมสำหรับเส้นทางและการขับขี่
โดยค่าเริ่มต้น สัญญาณไฟจราจรและป้ายหยุดจะถูกปิดใช้ใน Navigation SDK สำหรับ iOS หากต้องการเปิดใช้ฟีเจอร์นี้ ให้เรียกใช้การตั้งค่า GMSMapView
สำหรับแต่ละตัวเลือกแยกกัน ดังนี้ showsTrafficLights
และ showsStopSigns
mapView.settings.showsTrafficLights = true
mapView.settings.showsStopSigns = true
mapView.settings.showsTrafficLights = YES;
mapView.settings.showsStopSigns = YES;
การควบคุมมาตรวัดความเร็ว
เมื่อเปิดใช้การนําทางและตั้งค่าโหมดการเดินทางเป็น "ขับรถ" แล้ว Navigation SDK สําหรับ iOS จะแสดงตัวควบคุมขีดจํากัดความเร็วที่มุมล่างของแผนที่ซึ่งแสดงขีดจํากัดความเร็วปัจจุบัน เมื่อคนขับขับรถเร็วเกินขีดจำกัด การควบคุมจะขยายออกเพื่อแสดงมาตรวัดความเร็วที่ 2 พร้อมความเร็วปัจจุบันของคนขับ
คุณสามารถตั้งค่าระดับการแจ้งเตือนเพื่อเปลี่ยนการจัดรูปแบบของจอแสดงผลมาตรวัดความเร็วได้เมื่อผู้ขับขี่ขับรถเร็วเกินขีดจำกัดที่กำหนด เช่น คุณสามารถระบุให้ความเร็วปัจจุบันแสดงด้วยสีข้อความสีแดงเมื่อผู้ขับขี่ขับรถเร็วกว่าขีดจำกัดความเร็ว 5 ไมล์ต่อชั่วโมง และมีพื้นหลังสีแดงเมื่อผู้ขับขี่ขับรถเร็วกว่าขีดจำกัดความเร็ว 10 ไมล์ต่อชั่วโมง
หากต้องการแสดงการควบคุมขีดจำกัดความเร็ว ให้ตั้งค่าพร็อพเพอร์ตี้ shouldDisplaySpeedometer
ของ
GMSUISettings
เป็น true
หากต้องการปิดใช้การแสดงการควบคุมความเร็ว ให้ตั้งค่า shouldDisplaySpeedometer
เป็น false
mapView.shouldDisplaySpeedometer = true
mapView.shouldDisplaySpeedometer = YES;
ดูข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าการแจ้งเตือนสำหรับมาตรความเร็วได้ที่หัวข้อกำหนดค่าการแจ้งเตือนมาตรความเร็ว
เครื่องหมายปลายทาง
คุณสามารถแสดงหรือซ่อนเครื่องหมายปลายทางของเส้นทางหนึ่งๆ ได้โดยการตั้งค่าพร็อพเพอร์ตี้ showsDestinationMarkers
ของ GMSUISettings
ตัวอย่างต่อไปนี้แสดงการปิดเครื่องหมายปลายทาง
mapView.settings.showsDestinationMarkers = false
mapView.settings.showsDestinationMarkers = NO;
ฟีเจอร์ประสบการณ์การใช้งานแผนที่
Navigation SDK ช่วยให้คุณปรับแต่งประสบการณ์การนําทางเพิ่มเติมสําหรับผู้ใช้ได้ การเปลี่ยนแปลงที่คุณทำกับอินสแตนซ์จะแสดงในครั้งถัดไปที่ผู้ใช้อัปเดตแอป
ปิดใช้ท่าทางสัมผัสเริ่มต้นของแผนที่
คุณสามารถปิดใช้ท่าทางสัมผัสเริ่มต้นบนแผนที่ได้โดยการตั้งค่าพร็อพเพอร์ตี้ของคลาส GMSUISettings
ซึ่งใช้เป็นพร็อพเพอร์ตี้ของ GMSMapView
ได้
คุณสามารถเปิดและปิดใช้ท่าทางสัมผัสต่อไปนี้แบบเป็นโปรแกรมได้ โปรดทราบว่าการปิดใช้ท่าทางสัมผัสจะไม่จำกัดการเข้าถึงการตั้งค่ากล้องแบบเป็นโปรแกรม
scrollGestures
— ควบคุมว่าจะเปิดหรือปิดใช้ท่าทางสัมผัสในการเลื่อน หากเปิดใช้ ผู้ใช้จะปัดเพื่อเลื่อนกล้องได้zoomGestures
— ควบคุมว่าจะเปิดหรือปิดใช้ท่าทางสัมผัสเพื่อซูม หากเปิดใช้ ผู้ใช้อาจแตะสองครั้ง แตะด้วย 2 นิ้ว หรือใช้ 2 นิ้วบีบเข้าเพื่อซูมกล้อง โปรดทราบว่าการแตะสองครั้งหรือการบีบนิ้วเมื่อเปิดใช้scrollGestures
อาจทำให้กล้องเลื่อนไปยังจุดที่ระบุtiltGestures
— ควบคุมว่าจะเปิดหรือปิดใช้ท่าทางสัมผัสด้วยการเอียง หากเปิดใช้ ผู้ใช้อาจใช้ 2 นิ้วปัดขึ้นหรือลงในแนวตั้งเพื่อเอียงกล้องrotateGestures
— ควบคุมว่าจะเปิดหรือปิดใช้ท่าทางสัมผัสในการหมุน หากเปิดใช้ ผู้ใช้อาจใช้ท่าทางสัมผัสหมุนด้วย 2 นิ้วเพื่อหมุนกล้องได้
ในตัวอย่างนี้ มีการปิดใช้ทั้งท่าทางสัมผัสในการเลื่อนและซูม
mapView.settings.scrollGestures = false
mapView.settings.zoomGestures = false
mapView.settings.scrollGestures = NO;
mapView.settings.zoomGestures = NO;
วางตัวควบคุมและองค์ประกอบ UI
คุณสามารถจัดตําแหน่งตัวควบคุมและองค์ประกอบ UI อื่นๆ โดยสัมพันธ์กับตําแหน่งของส่วนหัวและส่วนท้ายการนําทางได้โดยใช้พร็อพเพอร์ตี้ต่อไปนี้
navigationHeaderLayoutGuide
navigationFooterLayoutGuide
bottomTrailingButtonsLayoutGuide
ตัวอย่างโค้ดต่อไปนี้แสดงการใช้คำแนะนำเลย์เอาต์เพื่อวางตำแหน่งคู่ป้ายกำกับในมุมมองแผนที่
/* Add a label to the top left, positioned below the header. */
let topLabel = UILabel()
topLabel.text = "Top Left"
mapView.addSubview(topLabel)
topLabel.translatesAutoresizingMaskIntoConstraints = false
topLabel.topAnchor.constraint(equalTo: mapView.navigationHeaderLayoutGuide.bottomAnchor).isActive = true
topLabel.leadingAnchor.constraint(equalTo: mapView.leadingAnchor).isActive = true
/* Add a label to the bottom right, positioned above the footer. */
let bottomLabel = UILabel()
bottomLabel.text = "Bottom Right"
mapView.addSubview(bottomLabel)
bottomLabel.translatesAutoresizingMaskIntoConstraints = false
bottomLabel.bottomAnchor.constraint(equalTo: mapView.navigationFooterLayoutGuide.topAnchor).isActive = true
bottomLabel.trailingAnchor.constraint(equalTo: mapView.trailingAnchor).isActive = true
/* Add a label to the top left, positioned below the header. */
UILabel *topLabel = [[UILabel alloc] init];
topLabel.text = @"Top Left";
[view addSubview:topLabel];
topLabel.translatesAutoresizingMaskIntoConstraints = NO;
[topLabel.topAnchor
constraintEqualToAnchor:mapView.navigationHeaderLayoutGuide.bottomAnchor].active = YES;
[topLabel.leadingAnchor constraintEqualToAnchor:mapView.leadingAnchor].active = YES;
/* Add a label to the bottom right, positioned above the footer. */
UILabel *bottomLabel = [[UILabel alloc] init];
bottomLabel.text = @"Bottom Right";
[view addSubview:bottomLabel];
bottomLabel.translatesAutoresizingMaskIntoConstraints = NO;
[bottomLabel.bottomAnchor
constraintEqualToAnchor:mapView.navigationFooterLayoutGuide.topAnchor].active = YES;
[bottomLabel.trailingAnchor constraintEqualToAnchor:mapView.trailingAnchor].active = YES;
ดูตัวอย่างวิธีใช้ bottomTrailingButtonsLayoutGuide
เพื่อวางปุ่มการรายงานการหยุดชะงักแบบเรียลไทม์ได้ที่กำหนดค่าการหยุดชะงักแบบเรียลไทม์
ซ่อนเส้นทางอื่น
เมื่ออินเทอร์เฟซผู้ใช้มีข้อมูลมากเกินไป คุณสามารถลดความกระจัดกระจายได้โดยแสดงเส้นทางอื่นน้อยกว่าค่าเริ่มต้น (2 เส้นทาง) หรือไม่แสดงเส้นทางอื่นเลย คุณสามารถกําหนดค่าตัวเลือกนี้ก่อนที่จะดึงข้อมูลเส้นทางได้โดยการกําหนดค่า GMSNavigationRoutingOptions
และตั้งค่า alternateRoutesStrategy
ด้วยค่าการแจกแจงค่าใดค่าหนึ่งต่อไปนี้
ค่าการแจงนับ | คำอธิบาย |
---|---|
GMSNavigationAlternateRoutesStrategyAll | ค่าเริ่มต้น แสดงเส้นทางอื่นได้สูงสุด 2 เส้นทาง |
GMSNavigationAlternateRoutesStrategyOne | แสดงเส้นทางอื่น 1 เส้นทาง (หากมี) |
GMSNavigationAlternateRoutesStrategyNone | ซ่อนเส้นทางอื่น |
ตัวอย่าง
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีซ่อนเส้นทางอื่นทั้งหมด
let routingOptions = GMSNavigationRoutingOptions(alternateRoutesStrategy: .none)
navigator?.setDestinations(destinations,
routingOptions: routingOptions) { routeStatus in
...
}
GMSNavigationRoutingOptions *routingOptions = [[GMSNavigationRoutingOptions alloc] initWithAlternateRoutesStrategy:GMSNavigationAlternateRoutesStrategyNone];
[navigator setDestinations:destinations
routingOptions:routingOptions
callback:^(GMSRouteStatus routeStatus){...}];