Chỉ đường đến các điểm trên đường đi

Navigation SDK cho iOS cung cấp các cách thức 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à ngữ 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 cách sử dụng toạ độ vị trí hoặc mã địa điểm. Mặc dù đôi khi 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ể bám theo đoạn đường gần nhất, nhưng đây 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 nâng cao về điểm tham chiếu giải quyết vấn đề này bằng cách cho phép bạn cung cấp thêm ngữ cảnh.

Sử dụng mã thông báo Điểm điều hướng

Để có được tuyến đường chính xác nhất đến các điểm tiếp cận cụ thể như lối vào, bến tàu 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 Destinations của Geocoding API. Đó là 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:

  1. Lấy navigationPointToken từ phản hồi phương thức Destinations của Geocoding API.

  2. Chỉ định navigationPointToken khi bạn tạo GMSNavigationWaypoint.

Lưu ý: Bạn không thể đồng thời chỉ định mã thông báo điểm điều hướng cùng với vị trí và PlaceID.

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] initWithNavigationPointToek:@"sampleNavigationPointToken"

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, truy xuất mã thông báo tuyến đường từ Routes API, rồi truyền cả mã thông báo điểm điều hướng và mã thông báo tuyến đường đến Navigation SDK. Đ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ều hướng.

Mã thông báo tuyến đường thiên về tuyến đường mà Navigation SDK đã chọn cho tuyến đường được dùng để định giá. Điều này giúp giảm nguy cơ sử dụng tuyến đường dài hơn hoặc ngắn hơn cho chuyến đi, có thể gây ra "biến động giá".

Hãy xem tài liệu về Routes API để biết thêm thông tin về cách chỉ định vị trí bằng mã thông báo điểm điều hướngcách tạo mã thông báo tuyến đường. Xem phần "Lập kế hoạch cho một tuyến đường" để tìm hiểu cách lập kế hoạch cho một tuyến đường bằng mã thông báo tuyến đường.

Sơ đồ này cho thấy cách một ứng dụng đi chung xe hoặc giao hàng sẽ sử dụng đồng thời mã thông báo điểm điều hướng và mã thông báo tuyến đường:

Sơ đồ trường hợp sử dụng dịch vụ đi chung xe hoặc giao hàng
Sơ đồ về trường hợp sử dụng dịch vụ đi chung xe hoặc dịch vụ giao hàng

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 một điểm đánh dấ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í) mà vẫn cung cấp ngữ cảnh của địa điểm tổng thể (mã địa điểm). Điều này cho phép Navigation SDK mang đến trải nghiệm đến nơi phong phú hơn 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 ở gần liên quan đến Place ID.

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"];

Những điều cần lưu ý:

Khi bạn cung cấp cả placeIDlocation:

  • Tuyến đường chủ yếu nhắm đến location được chỉ định.
  • placeId được dùng làm bối cảnh để nâng cao trải nghiệm khi người dùng đến trang đích.
  • Dự phòng: Nếu SDK xác định rằng placeId được cung cấp tương ứng với một đối tượng quá xa location đã cho, thì placeId sẽ bị bỏ qua. Trong trường hợp này, hoạt động định tuyến sẽ chỉ diễn ra đến location và bạn sẽ không thể sử dụng các tính năng nâng cao trải nghiệm đến nơi theo địa điểm.

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 Đánh dấu đích đến
Chỉ có 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 Xuất hiện nếu có thể suy luận ra đích đế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ều hướng 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 do mã thông báo đại diện Từ đích đến được xác định trong phương thức đích đến ban đầu của yêu cầu Geocoding API
Kết hợp toạ độ vị trí và mã địa điểm se đặ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 xuất hiện nếu Mã địa điểm quá xa so với toạ độ vĩ độ/kinh độ