Mendapatkan informasi rute

Ikuti panduan ini dalam menyiapkan aplikasi Anda agar dapat mengambil waktu, jarak, dan segmen rute untuk rute saat ini.

Ringkasan

Untuk mendapatkan informasi tentang rute saat ini, dapatkan properti yang sesuai dari instance navigator:

Melihat kode

Mendapatkan waktu ke tujuan berikutnya

Untuk mendapatkan waktu ke tujuan berikutnya, panggil timeToNextDestination(). Tindakan ini akan menampilkan nilai NSTimeInterval. Contoh berikut menunjukkan pencatatan waktu ke tujuan berikutnya:

Swift

if let navigator = mapView.navigator {
  let time = navigator.timeToNextDestination
  let minutes = floor(time/60)
  let seconds = round(time - minutes * 60)
  NSLog("Time to next destination: %.0f:%.0f", minutes, seconds)
}

Objective-C

NSTimeInterval time = _mapView.navigator.timeToNextDestination;
int minutes = floor(time/60);
int seconds = round(time - minutes * 60);
NSLog(@"%@", [NSString stringWithFormat:@"Time to next destination: %i:%i.", minutes, seconds]);

Mendapatkan jarak ke tujuan berikutnya

Untuk mendapatkan jarak ke tujuan berikutnya, panggil distanceToNextDestination(). Tindakan ini akan menampilkan nilai CLLocationDistance. Unit ditentukan dalam meter.

Swift

if let navigator = mapView.navigator {
  let distance = navigator.distanceToNextDestination
  let miles = distance * 0.00062137
  NSLog("Distance to next destination: %.2f miles.", miles)
}

Objective-C

CLLocationDistance distance = _mapView.navigator.distanceToNextDestination;
double miles = distance * 0.00062137;
NSLog(@"%@", [NSString stringWithFormat:@"Distance to next destination: %.2f.", miles]);

Mendapatkan kondisi lalu lintas ke tujuan berikutnya

Untuk mendapatkan nilai yang menunjukkan arus lalu lintas ke tujuan berikutnya, panggil delayCategoryToNextDestination. Parameter ini menampilkan GMSNavigationDelayCategory. Contoh berikut menunjukkan cara mengevaluasi hasil dan mencatat pesan traffic ke dalam log:

Swift

if let navigator = mapView.navigator {
  // insert sample for evaluating traffic value
  let delay = navigator.delayCategoryToNextDestination
  let traffic = "unavailable"
  switch delay {
    case .noData:
      traffic = "unavailable"
    case .heavy:
      traffic = "heavy"
    case .medium:
      traffic = "moderate"
    case .light:
      traffic = "light"
    default:
      traffic = "unavailable"
  }
  print("Traffic is \(traffic).")
}

Objective-C

GMSNavigationDelayCategory delay = mapView.navigator.delayCategoryToNextDestination;
NSString *traffic = @"";

switch (delayCategory) {
    case GMSNavigationDelayCategoryNoData:
      traffic = @"No Data";
      break;
    case GMSNavigationDelayCategoryHeavy:
      traffic = @"Heavy";
      break;
    case GMSNavigationDelayCategoryMedium:
      traffic = @"Medium";
      break;
    case GMSNavigationDelayCategoryLight:
      traffic = @"Light";
      break;
    default:
      NSLog(@"Invalid delay category: %zd", delayCategory);
 }

NSLog(@"%@", [NSString stringWithFormat:@"Traffic is %@.", traffic]);

Mendapatkan informasi tentang segmen saat ini

Untuk mendapatkan informasi tentang segmen rute saat ini, panggil currentRouteLeg. Tindakan ini akan menampilkan instance GMSRouteLeg, tempat Anda bisa mendapatkan:

  • Tujuan untuk kaki.
  • Koordinat akhir di segmen perjalanan.
  • Jalur yang berisi koordinat yang membentuk segmen rute.

Contoh berikut menunjukkan logging judul dan koordinat lat/lng untuk segmen rute berikutnya:

Swift

if let navigator = mapView.navigator {
  let currentLeg = navigator.currentRouteLeg
  let nextDestination = currentLeg?.destinationWaypoint?.title
  let lat = currentLeg?.destinationCoordinate.latitude.description
  let lng = currentLeg?.destinationCoordinate.longitude.description
  NSLog(nextDestination! + ", " + lat! + "/" + lng!)
}

Objective-C

GMSRouteLeg *currentSegment = _mapView.navigator.currentRouteLeg;
NSString *nextDestination = currentSegment.destinationWaypoint.title;
CLLocationDegrees lat = currentSegment.destinationCoordinate.latitude;
CLLocationDegrees lng = currentSegment.destinationCoordinate.longitude;
NSLog(@"%@", [NSString stringWithFormat:@"%@, %f/%f", nextDestination, lat, lng]);

Mendapatkan jalur perjalanan terbaru

Untuk mendapatkan jalur perjalanan terbaru, panggil traveledPath. Tindakan ini akan menampilkan instance GMSPath yang telah disederhanakan untuk menghapus titik redundan (misalnya, mengubah titik kolinear berurutan menjadi segmen garis tunggal). Jalur ini kosong sampai panduan dimulai. Contoh berikut menunjukkan cara mendapatkan jalur yang baru saja dilalui:

Swift

if let navigator = mapView.navigator {
  let latestPath = navigator.traveledPath
  if latestPath.count() > 0 {
    let begin: CLLocationCoordinate2D = latestPath.coordinate(at: 0)
    let current: CLLocationCoordinate2D = latestPath.coordinate(at: latestPath.count() - 1)
    print("Path from (\(begin.latitude),\(begin.longitude)) to (\(current.latitude),\(current.longitude))")
  }
}

Objective-C

GMSPath *latestPath = mapView.navigator.traveledPath;
if (latestPath.count > 0) {
  CLLocationCoordinate2D begin = [latestPath coordinateAtIndex:0];
  CLLocationCoordinate2D current = [latestPath coordinateAtIndex:latestPath.count - 1];
  NSLog(@"Path from %f/%f to %f/%f",
        begin.latitude,
        begin.longitude,
        current.latitude,
        current.longitude);
}