Route Overview API, DriverSDK'da derlenmiş bir Son Aşama Filo Çözümü ürünüdür. Bu özellik sayesinde, belirli bir aracın rota bilgilerini tek seferlik getirme şeklinde veya güncellemeler için bir işleyici kullanarak sürekli olarak alabilirsiniz. Rotaya Genel Bakış API, aşağıdaki bilgi türlerini destekler:
- Araç durak konumları, seyahat süreleri, mesafeler dahil olmak üzere tam rota planı
- Her bir durak arasındaki rota çoklu çizgi yolu.
Bu belgede, uygulamanızın API'siyle entegrasyon adımları açıklanmaktadır.
Ön koşullar
- Android uygulamanızı DriverSDK v4.1.0 veya üstünün alfa kanalını kullanarak çalıştırıyor olmanız gerekir. Alfa kanalı, Maven yapı kimliği için
transportation-driver-alpha
kullanılarak kullanılabilir. - API, Deliveries API üzerinden Fleet Engine tarafından sağlanan rota bilgilerini kullanır. Bu, DriverSDK'daki API'ler (
DeliveryDriverApi
) aracılığıyla veya doğrudan Fleet Engine'e sağlanabilir.
Entegrasyon adımları
Bu bölümde, Android sürücü uygulamanızı API ile entegre etmek için gereken temel adımlar ele alınmaktadır. Bu talimatlar aşağıdaki varsayımlara sahiptir:
- Halihazırda Driver SDK ile entegre edilmiş bir Android uygulamanız varsa
- Uygulamanızda
DeliveryDriverApi
öğesini, bulabileceğiniz bir bağlam nesnesiyle başlattınız.
Ayrıntılar için Android için Sürücü SDK'sını Kullanmaya Başlama bölümüne bakın.
0. Adım - Rota kurulumu
Fleet Engine'i zaten kurduysanız ve araç durakları ve teslimat görevleri oluşturabiliyorsanız bu adımı atlayabilirsiniz.
Durma ve görev bilgilerini Fleet Engine'e yüklemek için bir teslimat aracının geçerli bir rotaya atanmış olması gerekir. Bunun nedeni, Route Overview API'nin veri getirmek için geçerli yönlendirmeler gerektirmesidir. Geçerli rotalar, bir dizi ara nokta ve duraktan oluşur ve bir durak, yalnızca en az bir ilişkili göreve sahipse var olabilir. Daha fazla bilgi için Fleet Engine API entegrasyon kılavuzuna bakın.
1. Adım - API'yi başlatın
İlişkili durak ve görevlerle geçerli bir rota belirledikten sonra Route Overview API'yi başlatabilirsiniz. Başlatma, Fleet Engine ile API arasındaki bağlantı için gerekli olan çerçeveyi sağlar. Nesne, DriverContext
nesnenizde daha önce tanımlanan araç kimliğini belirttiğinden RouteOverview API, DriverSDK'da DeliveryDriverApi
öğesini başlatmak için kullandığınız bağlam nesnesiyle başlatılmalıdır. Aşağıdaki örnekte RouteOverviewApi
örneğinin nasıl oluşturulacağı gösterilmektedir.
RouteOverviewApi api = RouteOverviewApi.getInstance();
if (api == null) {
api = RouteOverviewApi.createInstance(context);
}
2. Adım - Aracı rota değişikliği etkinlikleri için kaydedin
API'yi başlattığınıza göre artık VehicleRouteOverview
nesnesini kullanarak rotaya genel bakış özellikleriyle etkileşime geçebilirsiniz. Bu, uygulamanızın rota kurulumu sırasında sağladığınız rota bilgilerini kullanmasına izin verir.
Etkinlik güncellemelerini ve rota alımını kolaylaştırmak için API etkinlik işleyiciyi kullanın.
Araca atanan duraklardan herhangi birine giden yol güncellendiğinde, durma noktası yeniden düzenlendiğinde veya Fleet Engine TVS bilgilerini güncellediğinde bir rota değişikliği etkinliği meydana gelir.
vehicleRouteOverview.addOnRouteChangedEventListener(event -> {
// handle route update events
});
3. Adım - API'yi etkinleştirin
Artık rota bilgilerini kullanmaya hazır olduğunuza göre, araç etkinliklerine yanıt vermesine izin vermek için API'yi etkinleştirmeniz gerekir. Ağ bant genişliğinin gereksiz bir şekilde tüketimini önlemek için API'nin devre dışı durumda başlatıldığını unutmayın.
vehicleRouteOverview.setRouteOverviewEnabled(true);
Aynı yöntemi false
değeriyle çağırarak bu güncellemeleri istediğiniz zaman duraklatabilirsiniz.
4. Adım - Rotayı Google Haritası üzerinde çizin
RouteToVehicleStop
'ların listesini aldıktan sonra, bunları uygulamanızda kullanabilirsiniz. Örneğin, bir Google Haritalar örneğinde rotanın çoklu çizgi yolunu çizebilirsiniz. Aşağıdaki kod snippet'i, harita görünümünde rota çoklu çizgisini çizen ve her durak konumunun üstüne işaretçiler ekleyen bir örnek göstermektedir.
GoogleMap googleMap = … // Instance of the Map view you are using
ImmutableList<RouteToVehicleStop> route = event.newRoute();
PolylineOptions routePolyline = new PolylineOptions().color(Color.BLUE);
for (RouteToVehicleStop stop : route) {
routePolyline.addAll(stop.path());
MarkerOptions marker =
new MarkerOptions().position(stop.vehicleStop().getWaypoint().getPosition());
googleMap.addMarker(marker);
}
googleMap.addPolyline(routePolyline);
}
Bu, sağdaki ekran görüntüsüne benzer bir görünümle sonuçlanır:
5. Adım - Rotanın anlık görüntüsünü alın
Uygulamanızın, mevcut rota bilgilerinin anlık görüntüsünü almak için tek seferlik bir çağrı yayınlamasını istiyorsanız bu verileri almak için aşağıdaki yöntemi kullanabilirsiniz:
ListenableFuture<ImmutableList<RouteToVehicleStop> future = vehicleRouteOverview.getRouteToVehicleStops();
ImmutableList<RouteToVehicleStop> stops = future.get();
Rota güncellemelerine etkinlik işleyiciler aracılığıyla abone olmak yerine bunu yapabilirsiniz.
6. Adım - Temizleme
Uygulamanızda artık rotaya genel bakış işlevine ihtiyaç duymuyorsa yeri temizlediğinizden emin olun. Temizlik, uygulamanızda gereksiz bellek, işleme ve ağ tüketimini önler.
Belirli bir etkinlik işleyiciyi kaldırma
Belirli bir işleyiciye artık gerek kalmadığında etkinlik işleyiciyi kaldırmanız gerekir.
vehicleRouteOverview.removeOnRouteChangedEventListener(listener);
Tüm etkinlik işleyicileri temizle
Temizlik rutininizin bir parçası olarak aynı anda kaydedilen tüm farklı etkinlik işleyicileri kaldırabilirsiniz.
vehicleRouteOverview.clearEventListeners();
Route Overview API örneğini temizle
Rotaya Genel Bakış artık gerekli olmadığında veya takip edilen aracın kimliği değiştiğinde dahili referansları temizlemek için bu API'yi çağırabilirsiniz.
vehicleRouteOverview.clearInstance();