دریافت اطلاعات مسیر

این راهنما را دنبال کنید تا برنامه‌تان را برای بازیابی زمان‌ها، فاصله‌ها، و بخش‌های مسیر برای مسیر فعلی راه‌اندازی کنید.

نمای کلی

برای دریافت اطلاعات درباره مسیر فعلی، ویژگی مناسب را از نمونه navigator دریافت کنید:

دیدن کد

درحال دریافت زمان رسیدن به مقصد بعدی

برای دریافت زمان رسیدن به مقصد بعدی، با timeToNextDestination() تماس بگیرید. این مقدار NSTimeInterval را برمی‌گرداند. مثال زیر نشان می‌دهد زمان رسیدن به مقصد بعدی ثبت می‌شود:

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)
}

آبجکتیو-سی

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

درحال دریافت فاصله تا مقصد بعدی

برای دریافت فاصله تا مقصد بعدی، distanceToNextDestination() را فراخوانی کنید. این مقدار CLLocationDistance را برمی‌گرداند. واحدها به متر مشخص شده‌اند.

Swift

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

آبجکتیو-سی

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

درحال دریافت وضعیت ترافیک تا مقصد بعدی

برای دریافت مقداری که نشان‌دهنده جریان ترافیک به مقصد بعدی است، delayCategoryToNextDestination را فراخوانی کنید. این پارامتر GMSNavigationDelayCategory را برمی‌گرداند. مثال زیر ارزیابی نتیجه و ثبت پیام ترافیک را نشان می‌دهد:

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).")
}

آبجکتیو-سی

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

درحال دریافت اطلاعات درباره بخش فعلی سفر

برای دریافت اطلاعات درباره بخش فعلی مسیر، با currentRouteLeg تماس بگیرید. این کار یک نمونه GMSRouteLeg برمی‌گرداند که از آن می‌توانید موارد زیر را دریافت کنید:

  • مقصد برای این بخش.
  • مختصات نهایی در بخش.
  • مسیری که حاوی مختصاتی است که بخش مسیر را تشکیل می‌دهد.

مثال زیر ثبت عنوان و مختصات عرض/طول جغرافیایی را برای بخش بعدی مسیر نشان می‌دهد:

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!)
}

آبجکتیو-سی

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

دریافت آخرین مسیر پیموده‌شده

برای دریافت جدیدترین مسیر طی‌شده، traveledPath را فراخوانی کنید. این کار یک نمونه GMSPath برمی‌گرداند که برای حذف نقاط زائد ساده شده است (برای مثال تبدیل نقاط هم‌خط متوالی به یک پاره‌خط). این مسیر تا زمانی که راهنمایی شروع نشود خالی است. مثال زیر نحوه دریافت آخرین مسیر پیموده‌شده را نشان می‌دهد:

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))")
  }
}

آبجکتیو-سی

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);
}