Seyahat verilerinizi aldığınızda arka uçunuz, sürücünün seyahat ilerlemesini ayrıntılı olarak açıklayan JSON yükleri alır. Seyahati izlemek, gönderim sistemlerinizi güncellemek ve sürücü ilerledikçe veya bir seyahat sona erdiğinde bir sonraki adımı belirlemek için mevcut seyahat durumlarını yorumlamak üzere bu yükleri ayrıştırın.
Veri yükünü okuma
Google Haritalar veya Waze, sürücü navigasyonu başlattığında, rota boyunca düzenli olarak (varsayılan olarak her 60 saniyede bir) ve sürücü hedefe vardığında yolculuk verileri yüklerini Navigation Connect sunucularına gönderir. Her JSON mesajı, sürücünün yola sabitlenmiş koordinatları, gidilen mesafe ve tahmini varış zamanı (TVZ) dahil olmak üzere ilgili yolculuk verilerini içerir.
Aşağıdaki kod örneğinde, bir sürücünün King's Cross'tan Central St. Giles'a yaptığı bir yolculuk için navigasyonu başlattığı zamana ait bir yolculuk verileri yükü gösterilmektedir.
{
"name": "projects/123456/trips/221B9CD6-4146-4CBF-9556-853817654938",
"state": "ENROUTE",
"execution": {
"origin": {
"point": {
"latitude": 51.5333329,
"longitude": -0.1265845
}
},
"destination": {
"point": {
"latitude": 51.515598,
"longitude": -0.1277623
}
},
"location": {
"point": {
"latitude": 51.5333329,
"longitude": -0.1265845
},
"sourceTime": "2025-05-30T12:37:26Z",
"serverTime": "2025-05-30T12:37:26.221069Z"
},
"traveledDuration": "0s",
"remainingDuration": "990s",
"traveledDistanceMeters": 0,
"remainingDistanceMeters": 2879,
"stopAddedInRoute": false
}
}
Etkin gezi durumlarını izleme
Başarılı bir başlangıcı onaylamak ve ilerlemeyi izlemek için her yükteki durum alanını değerlendirin.
| Durum | Açıklama |
|---|---|
NEW |
Seyahat oluşturuldu ancak sürücü henüz navigasyonu başlatmadı. |
ENROUTE |
Sürücü, hedefe gitmek için aktif olarak navigasyonu kullanıyor. Seyahatin kimliğinin başarıyla doğrulandığını ve seyahatin başarıyla başladığını onaylamak için bu durumu kullanın. |
Eklenen durakları yönetme
Sürücüler, navigasyon sırasında rotalarına durak ekleyebilir. Bu durumda, Navigation Connect, JSON veri yükünde execution.stopAddedInRoute alanını true olarak ayarlar. Navigation Connect API, sürücüyü orijinal hedefe doğru takip etmeye devam eder. Tahmini varış zamanı (TVZ), mesafe ve süre gibi metrikler, eklenen durakları içerecek şekilde artar.
Durak ekleme davranışı, navigasyon uygulamasına bağlıdır ve uygulamanın standart işlevselliğiyle eşleşir:
- Google Haritalar: Sürücüler rotalarına birden fazla durak ekleyebilir.
- Waze: Sürücüler yalnızca bir durak ekleyebilir. Bir sürücü başka bir durak eklemeye çalışırsa Waze, mevcut rotaya durağı eklemek yerine yeni bir navigasyon oturumu başlatmasını ister.
Bu özelliği desteklemek için arka uç girişlerinizi ayarlamanız gerekmez.
Kimlik doğrulama ve başlatma sorunlarını giderme
ENROUTE durumu almazsanız büyük olasılıkla bir kimlik doğrulama hatası oluşmuştur. Yaygın nedenler arasında yanlış yazılmış API parametreleri veya süresi dolmuş bir gezi jetonu yer alır. İlk CreateTrip yanıtınızdaki jeton geçerlilik bitiş zamanını kontrol edin.
Durum NEW'dan ENROUTE'ya değişmezse sürücünün cihazı kimlik doğrulamayı engelliyor olabilir. Navigation Connect bu durumlarda hata mesajı göndermez. Aşağıdakileri doğrulayın:
- Sürücünün cihazında Waze 5.15.5 veya sonraki bir sürümü ya da Google Haritalar 26.14 veya sonraki bir sürümü yüklü olmalıdır.
- Sürücü, Android Auto veya Apple CarPlay kullanmıyordur.
- Sürücünün etkin bir internet bağlantısı olmalıdır.
Kalan rota verilerini işleme (yalnızca Waze)
Seyahat oluşturma sırasında kalan rota raporlamayı etkinleştirdiyseniz arka uçunuz, sürücünün mevcut konumundan nihai varış noktasına kadar olan etkin rota poliline ve anlık trafik koşullarına ilişkin bilgileri alır.
Bu verileri, uygulamalarınızdaki çeşitli özellikleri desteklemek için alıp işleyebilirsiniz. Örneğin:
- Canlı izleme haritalarını destekleme: Sürücünün yolculuğu hakkında görünürlük sağlamak için kalan rota çoklu çizgisini müşteriye yönelik bir web veya mobil haritada oluşturun.
- Tahmini varış zamanı doğruluğunu artırma: İç lojistiği veya teslimat varış tahminlerini iyileştirmek için yola göre hizalanmış çoklu çizgi ve trafik aralığı hızlarını birleştirin.
- Yönlendirme uygunluğunu analiz etme: Sürücülerin kurallara uyup uymadığını değerlendirmek için kalan rota geometrisini beklenen dağıtım rotalarıyla karşılaştırın.
Navigation Connect, GetTrip isteği gönderip göndermediğinize veya Google Cloud Pub/Sub'ı kullanarak etkinliğe dayalı güncellemeler alıp almadığınıza bakılmaksızın kalan rota ayrıntılarını execution.remainingRoute alanında döndürür. Ancak, yük biçimlerinin bu verileri nasıl biçimlendireceği ve yapılandıracağı, kullandığınız alma yöntemine bağlıdır.
GetTrip yöntemi
GetTrip yöntemini çağırdığınızda, çoklu çizginin yanıt biçimi, isteğinizde belirttiğiniz routePolylineFormat parametresine bağlıdır. Daha fazla bilgi için Çoklu çizgi biçimlerini özelleştirme başlıklı makaleyi inceleyin.
Navigation Connect, tüm çoklu çizgi biçimleri için trafiği SpeedReadingInterval alanında ayrı bir execution.remainingRoute.trafficInformation nesne listesi olarak döndürür. Bu nesneler, aşağıdaki değerleri kullanarak trafik kategorilerini çoklu çizgi indeksleriyle eşler:
startPolylinePointIndex: Çoklu çizgi üzerindeki trafik aralığının başlangıç dizini.endPolylinePointIndex: Trafik aralığının bitiş dizini.speed: Bu segmentin trafik kategorisi:NORMAL,SLOWveyaTRAFFIC_JAM.
Google Cloud Pub/Sub güncellemeleri
Pub/Sub ile seyahat verilerini aldığınızda,
güncellemeler her zaman kalan rota verilerini execution.remainingRoute alanında birleştirilmiş bir GeoJSON FeatureCollection olarak döndürür.
Bu biçim, çoklu çizgi geometrisini doğrudan trafik hızlarıyla birleştirerek indekslerin manuel olarak eşlenmesi ihtiyacını ortadan kaldırır.
Pub/Sub yükü örneğini inceleyin.
Aşağıdaki kod örneğinde, bir Pub/Sub mesajının updatedTrip nesnesindeki execution.remainingRoute alanında döndürülen GeoJSON yapısı gösterilmektedir:
{ "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [-122.3934, 37.7955], [-122.4010, 37.7980] ] }, "properties": { "speed": "SLOW" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [-122.4010, 37.7980], [-122.4058, 37.8025], [-122.4187, 37.8021] ] }, "properties": { "speed": "NORMAL" } } ] }
Yük boyutunu optimize etme
Koordinat dizileri büyük olduğundan, kalan rota verilerini Pub/Sub mesajlarınıza eklemek yük boyutunu önemli ölçüde artırabilir (mesaj başına 13-14 KB'a kadar). Yüksek sıklıkta güncellemeler alırsanız bu hacim, arka uç işlem yükünü ve kullanım maliyetlerini artırabilir.
Akışınızı optimize etmek için gezi oluşturma sırasında pubsubFieldMask nesnenizde TripConfig parametresini kullanarak ağır alanları hariç tutun. Ayrıntılı bilgi için İsteğe bağlı yapılandırmalar başlıklı makaleye bakın.
Seyahat bitiş durumlarını işleme
Bir sürücü hedefe ulaştığında veya navigasyonu durdurduğunda, yük aşağıdaki son durumları döndürür. Uygulamanızda uygun sonraki adımları tetiklemek için bu durumları kullanın.
| Durum | Açıklama | Önerilen işlem |
|---|---|---|
ARRIVED |
Sürücü hedefe ulaştı. | remainingDistanceMeters simgesini kontrol edin. Sürücü yakında bir yere park etmişse ancak tam koordinatlarda değilse uygulamanızda yürüme yol tarifi sağlamayı düşünebilirsiniz. |
SUSPENDED |
Sürücü, varış noktasına ulaşmadan önce adım adım navigasyondan manuel olarak çıktı. Google Haritalar veya Waze, sürücüleri bir oturumdan erken çıktıklarında uygulamanıza otomatik olarak geri yönlendirmediğinden sürücünün geri dön düğmesine manuel olarak dokunması gerekir. |
Sürücülerin yolculuklarını tamamlamalarına yardımcı olmak için execution.location ile varış noktasını karşılaştırın. Mesafe kalırsa yolculuğa devam etmek veya yürüyüş moduna geçmek için bir düğme ya da bağlantı sağlayın. |
FAILED |
Teknik bir hata nedeniyle bağlantı kesildi. Bu durum, uygulama bir rota hesaplayamadığında veya güvenlik uyarısı göründüğünde ortaya çıkar. Sürücü navigasyonu kullanmaya devam edebilir ancak siz güncelleme almazsınız. | Uygulamanızda manuel durum izlemeye geri dönün. |
CLIENT_ERROR |
Bu durumun nedenleri şunlardır:
|
Uygulamanızda manuel durum izlemeye geri dönün. |