Rota planlama

Bazen uygulamanızın sürücülere sağladığı rotayı planlamak isteyebilirsiniz. Routes API'den (veya Routes Preferred API'den) bir rota jetonu kullanmak, planlanan rotanız için iki noktayı belirtmenize yardımcı olabilir:

  • Rota için bir çoklu çizgi

  • Rota hedefleriniz

Örneğin, sahip olabileceğiniz yönlendirme hedefleriyle ilgili bazı örnekler aşağıda verilmiştir:

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

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

  • Hedefe varma süresini en aza indirin: Bir hizmet gönderme işlemi, operatörlerin bir iş isteğine ulaşması için gereken süreyi en aza indirmek isteyebilir.

  • Maliyetleri düşürüp güvenliği artırın: Bir araç paylaşım işletmesi, sürücüler için daha düşük maliyetli bir rota bulmak isteyebilir ve güvenlik nedeniyle belirli alanlardan kaçınabilir.

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?

Rotalar veya Rotalar Tercih Edilen API'sinden aldığınız rota jetonuyla, sağlanan rota üzerinde daha fazla kontrole sahip olursunuz:

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

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

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

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

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ğine yön vermek için Navigasyon SDK'sına iletebileceğiniz bir rota jetonu döndürür.

Rotalar API'sinden 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. Gezinme SDK'si rotayı alır veya rota, değişen koşullar nedeniyle kullanılamıyorsa en iyi eşleşen rotayı alır.

  4. Rota boyunca, trafik veya diğer yol koşulları değişirse ya da bir araç planlanan rotadan sapırsa, değiştirilen rotalar sürekli olarak jetondaki rota hedeflerine göre en iyi rotayı eşleştirmeye ç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 takip edilmemesinin olası nedenleri

Planladığınız rota ve rota hedeflerini, uyulması gereken yönergeler olarak düşünün: bunlar kuralcı değildir. Yol koşulları, başlangıç konumu veya planlanan rotayı oluşturmanızdan bu yana değişen diğer parametreler 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 planladığınız ve gerçekleşen mesafe hedefleri ile TVS’niz arasında bir uyuşmazlığa da neden olabilir.

Rota jetonu kullanarak rota planlama

Aşağıdaki adımlarda açıklandığı gibi, bir rota jetonu oluşturup bunu Navigasyon SDK'sına ileterek rota planlayabilirsiniz:

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

  1. Aşağıdaki yöntemlerden birini kullanarak bir 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 sayfasına göz atın.

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

    • travel_mode değerini DRIVING olarak ayarla
    • routing_preference öğesini TRAFFIC_AWARE veya TRAFFIC_AWARE_OPTIMAL olarak ayarlayın
    • Ara noktalar üzerinden KULLANMAYIN

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

  1. Rota jetonunu depolama: Gezinme 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 oluştururken kullandığınız hedef ara noktaları belirterek mapView.navigator setDestinations yöntemini kullanarak navigasyon SDK'sına rota jetonunu iletin:

    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 sonucunu döndürür.

Bu yöntem hakkında daha fazla bilgi için bkz. Navigator.setDestinations.

Örnek

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

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?

Gezinme SDK'sı tarafından oluşturulan rota ile rota jetonundaki planlanan rotanın nasıl etkileşimde bulunduğu aşağıda açıklanmıştır:

  • Daha önce ayarlanan hedefleri geçersiz kılar.

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

  • Yol ve trafik koşullarına ayarlar. Planlanan bir rotanın tam olarak izlenmemesinin olası nedenleri bölümüne göz atın.

  • Yönlendirmeyle ilgili aşağıdaki seçenekleri gereksiz olarak yoksayar:

    • avoidsHighways
    • avoidsTolls
    • avoidsFerries
    • licensePlateRestriction
  • Takipler:

    • Ara noktayla ilgili seçenekler (ör. yol kenarı tercihi).

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