Navigation SDK cho iOS cung cấp các cách nâng cao để chỉ định điểm tham chiếu hoặc điểm điều hướng, giúp định tuyến chính xác hơn và mang lại trải nghiệm đến nơi tốt hơn, đặc biệt là đối với những điểm đến có nhiều lối vào hoặc điểm điều hướng cụ thể. Bạn có thể định tuyến đến các vị trí chính xác bằng cách sử dụng navigationPointToken, đây là một chuỗi mã hoá vị trí và bối cảnh tuyến đường bổ sung. Bạn cũng có thể kết hợp toạ độ vĩ độ và kinh độ với Mã địa điểm để có thêm bối cảnh.
Thông tin khái quát
Trước phiên bản 10.10, bạn có thể xác định Waypoint bằng toạ độ vị trí hoặc Mã địa điểm. Mặc dù đôi khi có hiệu quả, nhưng việc chỉ định tuyến đến một vĩ độ và kinh độ đôi khi có thể dẫn đến các điểm trả khách hoặc đón khách không tối ưu, đặc biệt là đối với các địa điểm, công viên hoặc toà nhà lớn có nhiều lối vào. Kết quả có thể khớp với đoạn đường gần nhất, nhưng có thể không phải là điểm truy cập thuận tiện hoặc chính xác nhất.
Các lựa chọn điểm tham chiếu nâng cao giải quyết vấn đề này bằng cách cho phép bạn cung cấp thêm bối cảnh.
Sử dụng mã thông báo điểm điều hướng
Để định tuyến chính xác nhất đến các điểm truy cập cụ thể như lối vào, bến bốc dỡ hàng hoặc khu vực đón khách được chỉ định, bạn có thể sử dụng navigationPointToken.
Bạn có thể lấy mã thông báo này bằng cách gọi phương thức Điểm đến của Geocoding API. Nó đại diện cho một điểm điều hướng cụ thể, có thể định tuyến được liên kết với một địa điểm.
Cách chỉ định mã thông báo điểm điều hướng:
Lấy
navigationPointTokentừ phương thứcSearchDestinationscủa phản hồi Geocoding API.Chỉ định
navigationPointTokenđó khi bạn tạoGMSNavigationWaypoint.
Swift
// Create a waypoint using a navigation endpoint token
let waypointTwo = GMSNavigationWaypoint(
navigationPointToken: "ChIJALijSXPhQkARHmIozCCbXsASEgkFVjYHGH6PgBFrbM7wl3..",
title: "Sydney Opera House")
// Route to the waypoint
navigator.setDestinations([waypointTwo]) { [weak self] routeStatus in
self?.handleRouteCallback(status: routeStatus)
}
Objective-C
GMSNavigationWaypoint *waypointTwo =
[[GMSNavigationWaypoint alloc] initWithNavigationPointToken:@"sampleNavigationPointToken"
title:@"Sydney Opera House"];
Sử dụng mã thông báo điểm điều hướng và mã thông báo tuyến đường
Bạn có thể truy xuất mã thông báo điểm điều hướng thông qua Geocoding API, sử dụng mã thông báo đó trong yêu cầu API Routes để lấy mã thông báo tuyến đường, sau đó chỉ truyền mã thông báo tuyến đường đến SDK Điều hướng. Mã thông báo tuyến đường giữ nguyên độ chính xác của mã thông báo điểm điều hướng. Điều này rất hữu ích trong các trường hợp như đi chung xe hoặc giao hàng, khi bạn sử dụng Routes API để tính giá chuyến đi và muốn có độ chính xác của mã thông báo điểm đi theo chỉ dẫn.
Với mã thông báo tuyến đường, SDK Điều hướng sẽ bắt đầu điều hướng trên cùng một tuyến đường mà bạn đã dùng để tính giá. Điều này giúp giảm nguy cơ sử dụng các tuyến đường dài hơn hoặc ngắn hơn cho chuyến đi, có thể gây ra "cú sốc về giá".
Để biết thêm thông tin về mã thông báo điểm điều hướng và mã thông báo tuyến đường trong Routes API, hãy xem bài viết Chỉ định vị trí cho một tuyến đường và Lấy mã thông báo tuyến đường. Để tìm hiểu cách lên kế hoạch cho tuyến đường bằng mã thông báo tuyến đường, hãy xem phần Lên kế hoạch cho tuyến đường.
Biểu đồ sau đây cho thấy cách một ứng dụng đi chung xe hoặc giao hàng sử dụng kết hợp mã thông báo điểm đi theo chỉ dẫn và mã thông báo tuyến đường. Kể từ phiên bản 11.3, ứng dụng dành cho tài xế chỉ truyền mã thông báo tuyến đường đến SDK Điều hướng ở bước 7.
Kết hợp mã địa điểm và vị trí
Kể từ phiên bản 10.10, bạn có thể cung cấp cả Mã địa điểm và toạ độ vị trí khi tạo điểm tham chiếu. Phương thức này hữu ích khi bạn muốn chỉ định một điểm chính xác (vị trí) trong khi vẫn cung cấp bối cảnh của toàn bộ địa điểm (Mã địa điểm). Nhờ đó, SDK Điều hướng có thể mang lại trải nghiệm phong phú hơn khi đến nơi bằng cách làm nổi bật toà nhà đích hoặc cho thấy các địa điểm yêu thích lân cận liên quan đến Mã địa điểm.
Swift
// Create a waypoint using both the latlng and placeID
let waypoint = GMSNavigationWaypoint(
location: CLLocationCoordinate2DMake(-33.85657945261524, 151.21535034203333),
placeID: "ChIJ3S-JXmauEmsRUcIaWtf4MzE",
title: "Sydney Opera House")
// Route to the waypoint
navigator.setDestinations([waypoint]) { [weak self] routeStatus in
self?.handleRouteCallback(status: routeStatus)
}
Objective-C
CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationWaypoint *waypoint = [[GMSNavigationWaypoint alloc] initWithLocation:placeID:coordinate title:@"waypoint from location and placeiD"];
Lưu ý
Khi bạn cung cấp cả placeID và location:
- Tuyến đường chủ yếu nhắm đến
locationđược chỉ định. placeIDcung cấp bối cảnh giúp nâng cao trải nghiệm khi đến nơi.- Dự phòng: Nếu SDK xác định rằng
placeIDđược cung cấp tương ứng với một tính năng quá xa so vớilocationđã cho, thì SDK sẽ bỏ quaplaceID. Trong trường hợp này, việc định tuyến chỉ tiến hành đếnlocationvà các tính năng nâng cao trải nghiệm đến dành riêng cho địa điểm sẽ không hoạt động.
Tóm tắt các cấu hình điểm tham chiếu hợp lệ
| Thông số kỹ thuật | location |
placeID |
navigationPointToken |
Hành vi định tuyến | Làm nổi bật đích đến |
|---|---|---|---|---|---|
| Chỉ toạ độ vị trí | đặt | vắng mặt | vắng mặt | Tuyến đường đến đoạn đường gần nhất với toạ độ đã xác định | Hiển thị nếu có thể suy luận điểm đến với độ tin cậy cao |
| Chỉ mã địa điểm | vắng mặt | đặt | vắng mặt | Tuyến đường đến điểm đi theo chỉ dẫn mặc định cho Mã địa điểm | Mã địa điểm đi |
| Chỉ mã thông báo điểm điều hướng | vắng mặt | vắng mặt | đặt | Tuyến đường đến điểm điều hướng chính xác được biểu thị bằng mã thông báo | Từ điểm đến được xác định trong yêu cầu phương thức điểm đến ban đầu của Geocoding API |
| Kết hợp toạ độ vị trí và Mã địa điểm | đặt | đặt | vắng mặt | Tuyến đường đến đoạn đường gần nhất với toạ độ đã xác định | Từ Mã địa điểm, mặc dù không hiển thị nếu Mã địa điểm quá xa so với toạ độ vĩ độ/kinh độ |