Rota planlama

Bazen uygulamanızın kullanıcılara sağladığı rotayı planlamak isteyebilirsiniz. Routes API'den (veya Routes Preferred API'si) rota jetonu kullanmak, planlanan rotanız için iki şeyi belirtmenize yardımcı olabilir:

  • Rota için çoklu çizgi

  • Rota hedefleriniz

Aşağıda, sahip olabileceğiniz yönlendirme hedeflerine ilişkin bazı örnekler verilmiştir:

  • Teslimat süresini en aza indirmek: Yemek teslimatı yapan bir işletme, yemeği teslim etmek için gereken süreyi en aza indirmek isteyebilir.

  • Seyahat süresini veya yakıt tüketimini en aza indirmek: Bir lojistik işletmesi, sürücülerinin verimliliğini artırmak ve yakıt maliyetlerini azaltmak isteyebilir.

  • Hedefe ulaşana kadar geçen süreyi en aza indirme: Bir hizmet dağıtım işlemi, operatörleri iş isteğinde bulunmak için gereken süreyi en aza indirmek isteyebilir.

  • Maliyetleri düşürün ve güvenliği artırın: Araç paylaşım işletmesi, yolcular için daha düşük maliyetli olan ve güvenlik nedeniyle belirli alanlardan kaçınan bir rota bulmak isteyebilir.

Rota jetonu kullanarak rota planlama hakkında daha fazla bilgi için Rota jetonu isteme sayfasına göz atın.

Rota hedefleri için neden rota jetonu kullanmalısınız?

Routes veya Routes Preferred API'sinden gelen rota jetonuyla, sağlanan rota üzerinde daha fazla kontrole sahip olursunuz:

  • Navigasyon SDK'sının mümkün olduğunda kullanması için önceden bir rota planlayın.

  • Navigasyon SDK'sının kullanacağı en iyi rotayı seçin. Routes API'de rota oluştururken rota jetonları isterseniz oluşturulan her rota için bir rota jetonu alırsınız. Ardından, navigasyon SDK'sına ilettiğinizde kullanmak istediğiniz rotanın jetonunu seçebilirsiniz.

  • TVS ve mesafe tahminleri de dahil olmak üzere fiyatı önceden tahmin edin. Gerçek maliyet ve süre değişiklik gösterse de bu tahmin, beklenen ve gerçekleşen rota maliyeti arasındaki boşluğu azaltır.

  • Eko rota veya en kısa rota gibi daha gelişmiş rota hedefleri belirtin.

Routes API rota jetonlarının işleyiş şekli

Rota hedeflerini kullanarak rota planlamak için Routes API veya Routes Preferred API'yi kullanabilirsiniz. Routes API, aracınızı nasıl yönlendirdiğini yönlendirmek için Navigasyon SDK'sına iletebileceğiniz bir rota jetonu döndürür.

Routes API'den bir rota jetonu isteyip kullandığınızda şunlar gerçekleşir:

  1. Routes API, rota çoklu çizgisini ve rota hedeflerini içeren şifrelenmiş bir rota jetonu döndürür.

  2. Rota jetonunu Gezinme SDK'sına iletirsiniz.

  3. Navigasyon SDK'sı rotayı alır veya değişen koşullar nedeniyle kullanılamıyorsa en iyi eşleşen rotayı alır.

  4. Rotada ilerlerken trafik veya diğer yol koşulları değişirse ya da araç planlanan rotadan saparsa değiştirilen rotalar, jetondaki rota hedeflerine dayanarak sürekli olarak en iyi rotayla eşleşmeye çalışır.

Bu işlem, gerçek rotanın planladığınız rotaya ne kadar yakın olduğunu en üst düzeye çıkarır.

Planlanan bir rotanın tam olarak izlenmemesinin olası nedenleri

Planladığınız rota ve rota hedeflerinizi uyulması gereken yönergeler olarak düşünün, yani bunlar belirleyici değildir. Yol koşullarındaki, başlangıç konumundaki veya planlanan rotayı oluşturmanızdan bu yana değişen diğer parametrelerdeki farklılıklar nedeniyle, planlanan rotanız ile rehberli navigasyon tarafından sağlanan rota arasında fark görebilirsiniz. Bu fark, diğer önemli seyahat niteliklerinin yanı sıra mesafe ve TVS için planlanan ve gerçekleşen hedefleriniz arasında uyumsuzluğa neden olabilir.

Rota jetonu kullanarak rota planlama

Aşağıdaki adımlarda açıklandığı gibi, rota jetonu oluşturup ardından Navigation SDK'sına geçirerek rota planlayabilirsiniz:

1. Adım: Routes or Routes Preferred API'sini kullanarak bir rota jetonu oluşturun

  1. Aşağıdaki yöntemlerden birini kullanarak rota jetonu isteyin:

    • Routes API: computeRoutes. Routes API'de rota jetonu isteme hakkında daha fazla bilgi için Rota hesaplama ve Rota jetonu isteme bölümlerine göz atın.

    • Routes Preferred API: computeCustomRoutes. Routes Preferred API'de rota jetonu isteme hakkında daha fazla bilgi için Rota planlama bölümüne bakın.

  2. Rota jetonu kullanma şartlarını karşılamak için rota isteğinizi ayarlayın:

    • travel_mode değerini DRIVING olarak ayarla
    • routing_preference değerini TRAFFIC_AWARE veya TRAFFIC_AWARE_OPTIMAL olarak ayarlayın
    • Via ara noktaları KULLANMAYIN

2. Adım: Rota jetonunu Navigation SDK'sına iletin

  1. Rota jetonunu depolama: Navigasyon SDK'sında, rota jetonunu depolamak için bir dize oluşturun. Örneğin:

    let routeToken = "route token returned by Routes API"

    Döndürülen rota jetonu örneği:

    {
    // Other fields
    "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g",
    }
    
  2. Rota jetonunu navigasyon SDK'sına mapView.navigator setDestinations yöntemini kullanarak iletin ve rota jetonunu oluştururken kullandığınız hedef ara noktaları belirtin:

    mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})

Navigator.setDestinations yöntemi, isteğin durumunu döndürür. Kullanıcının konumundan belirtilen hedefe giden bir rota bulunursa RouteStatus.OK değeri döndürülür.

Bu yöntemle ilgili daha fazla bilgi için Navigator.setDestinations bölümüne bakın.

Örnek

Aşağıdaki kod örnekleri, planlanan bir rotanın nasıl alınacağını göstermektedir.

Swift

let location = CLLocationCoordinate2D(latitude: 47.67, longitude: -122.20)
let waypoint1 = GMSNavigationWaypoint(location: location, title: "waypoint from location")!
let waypoint2 = GMSNavigationWaypoint(placeID: "samplePlaceID", title: "waypoint from Place ID")!

let routeToken = "route token returned by Routes API"
mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})

Objective-C

CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationWaypoint *waypoint1 = [[GMSNavigationWaypoint alloc] initWithLocation:coordinate title:@"waypoint from location"];
GMSNavigationWaypoint *waypoint2 = [[GMSNavigationWaypoint alloc] initWithPlaceID:@"samplePlaceID"
                                                                            title:@"waypoint from Place ID"];
NSString *routeToken = @"route token returned by Routes API";

[mapView.navigator setDestinations:@[waypoint1, waypoint2]
                         routeToken:routeToken
                           callback:^(GMSRouteStatus routeStatus){...}];

Rota jetonları ve Navigasyon SDK'sı nasıl etkileşimde bulunur?

Navigasyon SDK'sı tarafından oluşturulan rota ve rota jetonundaki planlanan rota şu şekilde etkileşim kurar:

  • Önceden ayarlanmış hedefleri geçersiz kılar.

  • Aracın başlangıç konumunu kullanır.

  • Yol ve trafik koşullarına göre ayarlanır. Planlanan bir rota neden tam olarak izlenmiyor olabilir? bölümüne göz atın.

  • Gerektiğinde olmayan aşağıdaki yönlendirmeyle ilgili seçenekleri yok sayar:

    • avoidsHighways
    • avoidsTolls
    • avoidsFerries
    • licensePlateRestriction
  • Takipler:

    • Yolun kenar tercihi gibi ara noktayla ilgili seçenekler.

    • Rota hedefleri. Gezinme SDK'sının döndürülen rotayı ayarlaması gerekiyorsa rota jetonu isterken belirttiğiniz rota hedeflerini kullanır. Bu nedenle, Routes API'de belirttiğiniz ara noktayla ilgili seçenekleri kullanın.