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

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

نمای کلی

برای دریافت اطلاعات درباره مسیر فعلی، ویژگی مناسب را از نمونه 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);
}