Gerçek zamanlı kesintileri yapılandırma
Anlık kesintiler, kullanıcıları rotaları üzerindeki kesintiler konusunda uyaran ve karşılaştıkları kesintileri bildirmelerine ve doğrulamalarına olanak tanıyan bir özellikler topluluğudur. Araç kazaları, trafik sıkışıklığı, polis ve hız kamerası varlığı, inşaat, şerit kapatma ve belirli hava koşulları, aksaklıklara örnek olarak verilebilir. Bu sayfada, özel gezinme kullanıcı arayüzlerini kullanan uygulamalarla ilgili hususlar da dahil olmak üzere anlık kesinti özellikleri ve bunların yapılandırma seçenekleri açıklanmaktadır.
Gerçek zamanlı aksaklık özellikleri
Navigation SDK, temel navigasyon deneyiminin bir parçası olarak aşağıdaki gerçek zamanlı aksaklık özelliklerini içerir:- Rotalar boyunca etkileşimli aksaklık açıklamaları.
- Aktif gezinme sırasında oylama ile otomatik kesinti uyarıları.
- Etkin navigasyon sırasında kesinti bildirme.
Bu özellikler yapılandırılabilir ve varsayılan olarak etkindir. Aşağıdaki bölümlerde, özellikler ve kullanılabilir yapılandırma seçenekleri hakkında daha fazla bilgi verilmektedir.
Rotalar boyunca etkileşimli aksaklık açıklama metinleri
Bir uygulama, rota genel görünümünde veya etkin gezinme sırasında bir rota gösterdiğinde mevcut aksaklıklar, rota boyunca açıklama metinleri olarak görünür. Açıklama metinlerinde, kesintinin türünü gösteren bir simge bulunur.

shouldDisplayPrompts
simgesini kullanarak rotalardaki aksaklık açıklama metinlerinin gösterilmesini kontrol edebilirsiniz. Bu simge, kullanıcı bir aksaklığa yaklaştığında otomatik uyarıların gösterilmesini de kontrol eder.
mapView.navigator.shouldDisplayPrompts = true
Kullanıcı bir açıklama metnine dokunduğunda kesinti ayrıntılarını gösterme
Kullanıcılar, kesinti türü, son bildirilme zamanı ve bazı durumlarda kesintinin hâlâ devam edip etmediğiyle ilgili oylama seçeneği de dahil olmak üzere kesinti hakkında daha fazla bilgi içeren bir bilgi kartı görüntülemek için bir açıklama metnine dokunabilir. Kullanıcının aktif gezinmede olup olmamasına bağlı olarak iki farklı bilgi kartı türü gösterilebilir ve her tür için yapılandırma seçenekleri farklıdır.
Aktif navigasyonu başlatmadan önce rota genel bakışlarında açıklama metni bilgi kartları
Kullanıcı, aktif navigasyonu başlatmadan önce bir rota genel görünümünde açıklama metnine dokunduğunda kesinti hakkında daha fazla bilgi içeren bir bilgi kartı gösterilir.

showsIncidentCards
simgesini kullanarak, kullanıcıların rota özetlerindeki aksaklık açıklama metinlerine dokunarak daha fazla bilgi görüntüleme özelliğini kontrol edebilirsiniz.
mapView.settings.showsIncidentCards = true
Etkin navigasyon sırasında açıklama metni bilgi kartları
Etkin gezinme sırasında bir rota üzerinde aksaklık açıklama metni göründüğünde kullanıcılar, aksaklık türü ve son bildirilme zamanı da dahil olmak üzere aksaklıkla ilgili daha fazla bilgi içeren bir bilgi kartını görüntülemek için açıklama metnine dokunabilir. Ayrıca, aksaklığın devam edip etmediğiyle ilgili oylama düğmelerini de görebilirler. Kullanıcılar tarafından gönderilen oylar Google tarafından işlenir ve diğer Google Haritalar kullanıcıları ile Navigation SDK kullanıcıları için haritada gösterilebilir. Ayrıca, kesintinin gösterilmeye devam edilip edilmeyeceğini belirlemek için de kullanılabilir.

shouldDisplayPrompts
simgesini kullanarak aktif gezinme sırasında aksaklık açıklama metinlerinin gösterilmesini ve bunlara dokunulabilmesini kontrol edebilirsiniz. Bu simge, rotalar boyunca açıklama metinlerinin gösterilmesini ve kullanıcı bir aksaklığa yaklaştığında otomatik uyarıların gösterilmesini de kontrol eder.
mapView.navigator.shouldDisplayPrompts = true
Etkin navigasyon sırasında oylama özelliğiyle otomatik kesinti uyarıları
Etkin gezinme sırasında, bir kullanıcı rotasında bir aksaklığa yaklaştığında aksaklıkla ilgili bilgilerin yer aldığı bir istem ve aksaklığın hâlâ devam edip etmediğine dair oylama düğmeleri gösterilir. Kullanıcılar tarafından gönderilen oylar Google tarafından işlenir ve diğer Google Haritalar ve Navigation SDK kullanıcıları için haritada gösterilebilir. Ayrıca, kesintinin gösterilmeye devam edilip edilmeyeceğini belirlemek için de kullanılabilir.

Etkin gezinme sırasında uyarı istemlerinin gösterilmesini shouldDisplayPrompts
simgesini kullanarak yapılandırabilirsiniz. Bu simge, rotalar üzerindeki açıklama metinlerinin gösterilmesini de kontrol eder.
mapView.navigator.shouldDisplayPrompts = true
Etkin navigasyon sırasında kesinti bildirme
Etkin gezinme modunda, gezinme kullanıcı arayüzünde, kullanıcıların rotaları üzerindeki yeni aksaklıkları bildirmesine olanak tanıyan bir düğme görünür. Kullanıcı düğmeye dokunduğunda, bildirilebilecek aksaklık türlerinin yer aldığı bir menü gösterilir. Kullanıcıların gönderdiği raporlar Google tarafından işlenir ve diğer Google Haritalar ile Navigation SDK kullanıcıları için haritada gösterilebilir.


Standart raporlama düğmesini gösterme veya gizleme
navigationReportIncidentButtonEnabled
simgesini kullanarak etkin gezinme sırasında standart raporlama düğmesinin görünürlüğünü yapılandırabilirsiniz.
// Enables the incident reporting FAB to show in situations where incident // reporting is possible. mapView.settings.navigationReportIncidentButtonEnabled = true
Özel bir bildirim düğmesi ekleme
Standart kesinti raporlama düğmesi yerine gezinme kullanıcı arayüzüne özel bir raporlama düğmesi ekleyebilirsiniz. Kullanıcı özel düğmeyi tıkladığında presentReportIncidentsPanel
yöntemini çağırarak raporlama menüsünün gösterilmesini tetikleyebilirsiniz. Özel raporlama düğmesi eklemeden önce, reportIncidentsAvailable
işlevini çağırarak uygulamanın etkin gezinmede olduğunu ve kullanıcının raporlamanın etkin olduğu bir ülkede bulunduğunu doğrulayın. Bu koşullardan biri karşılanmıyorsa raporlama menüsü görünmez.
// Check if reporting is available before displaying your button let isReportingAvailable = mapview.isIncidentReportingAvailable() customReportingIncidentButton.isHidden = !isReportingAvailable customReportingIncidentButton.addTarget(self, action: #selector(didTapReportIncidentButton), for: .touchUpInside) // Trigger the reporting flow if the button is clicked func didTapReportIncidentButton() { mapView.presentReportIncidentsPanel(self) { [weak self] error in guard let self = self else { return } if let error = error as NSError? { if error.domain == GMSMapViewPresentReportIncidentPanelErrorDomain { let errorCode = GMSMapViewPresentReportIncidentPanelErrorCode(rawValue: error.code) switch errorCode { case .internal: self.showErrorMessage( title: "Error Presenting Report Incident Panel", message: "An internal error occurred." ) case .reportingNotAvailable: self.showErrorMessage( title: "Error Presenting Report Incident Panel", message: "Reporting is not available." ) case .none: self.showErrorMessage( title: "Error Presenting Report Incident Panel", message: "An unknown error occurred." ) } } else { // Handle other potential errors (e.g., network errors) self.showErrorMessage( title: "Error Presenting Report Incident Panel", message: "An unexpected error occurred: \(error.localizedDescription)" ) } } // If error is nil, the panel was presented successfully. You can add any extra logic here. } }
Özel gezinme kullanıcı arayüzleriyle çalışma
Navigation SDK'yı uygulamanızda özel kullanıcı arayüzü öğeleri varsa çakışmaları önlemek için anlık kesinti öğelerini göz önünde bulundurmanız gerekir.
Raporlama düğmesinin konumu
Aksaklık bildirme düğmesi varsayılan olarak haritanın alt ucunda/son köşesinde bulunur. Soldan sağa dillerde sağ tarafta, sağdan sola dillerde ise sol taraftadır. Özel kullanıcı arayüzü öğelerine yer açmak için raporlama düğmesini taşımanız gerekiyorsabottomTrailingButtonsLayoutGuide
kullanın.
Swift
// Create a new layout guide let topRightLayoutGuide = UILayoutGuide() self.view.addLayoutGuide(topRightLayoutGuide) // Activate constraints using fixed constants here as an example // assuming the current reporting button is of fixed height topRightLayoutGuide.topAnchor.constraint(equalTo: _mapView.navigationHeaderLayoutGuide.bottomAnchor, constant: 50).isActive = true topRightLayoutGuide.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor, constant: -14).isActive = true // Assign the layout guide _mapView.bottomTrailingButtonsLayoutGuide = topRightLayoutGuide // Create an alternate layout guide to use when the header and the footer are not full width let topRightAlternateLayoutGuide = UILayoutGuide() self.view.addLayoutGuide(topRightAlternateLayoutGuide) // Activate constraints using fixed constants here as an example // assuming the current RTD button is of fixed height topRightAlternateLayoutGuide.topAnchor.constraint(equalTo: _mapView.navigationHeaderLayoutGuide.bottomAnchor, constant: 20).isActive = true topRightAlternateLayoutGuide.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true // Assign the layout guide _mapView.bottomTrailingButtonsAlternateLayoutGuide = topRightAlternateLayoutGuide
Objective-C
// Create a new layout guide UILayoutGuide *topRightLayoutGuide = [[UILayoutGuide alloc] init]; [self.view addLayoutGuide:topRightLayoutGuide]; // Activate constraints using fixed constants here as an example // assuming the current RTD button is of fixed height [[topRightLayoutGuide.topAnchor constraintEqualToAnchor:_mapView.navigationHeaderLayoutGuide.bottomAnchor constant:50] setActive:YES]; [[topRightLayoutGuide.trailingAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.trailingAnchor constant:-14] setActive:YES]; // Assign the layout guide _mapView.bottomTrailingButtonsLayoutGuide = topRightLayoutGuide; // Create an alternate layout guide to use when the header and the footer are not full width UILayoutGuide *topRightAlternateLayoutGuide = [[UILayoutGuide alloc] init]; [self.view addLayoutGuide:topRightAlternateLayoutGuide]; // Activate constraints using fixed constants here as an example // assuming the current RTD button is of fixed height [[topRightAlternateLayoutGuide.topAnchor constraintEqualToAnchor:_mapView.navigationHeaderLayoutGuide.bottomAnchor constant:50] setActive:YES]; [[topRightAlternateLayoutGuide.trailingAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.trailingAnchor constant:-14] setActive:YES]; // Assign the layout guide _mapView.bottomTrailingButtonsAlternateLayoutGuide = topRightAlternateLayoutGuide;
Prompt Visibility API (Deneysel)
Prompt Visibility API, bir Navigation SDK kullanıcı arayüzü öğesi görünmeden önce ve öğe kaldırılır kaldırılmaz geri çağırma almak için bir dinleyici ekleyerek Navigation SDK tarafından oluşturulan kullanıcı arayüzü öğeleri ile kendi özel kullanıcı arayüzü öğeleriniz arasındaki çakışmaları önlemenize yardımcı olur. Bilgi kartları, istemler ve kesinti raporlama menüsü gibi anlık kesinti öğeleriyle ilgili geri aramaların yanı sıra Navigation SDK tarafından oluşturulan diğer bildirimler için de geri arama alabilirsiniz.Swift
// Additional methods added to GMSNavigatorListener ... func navigatorWillPresentPrompt(_ navigator: GMSNavigator) { // Hide any sort of custom UI element. } func navigatorDidDismissPrompt(_ navigator: GMSNavigator) { // Show any sort of custom UI element. } ...
Objective-C
// Additional methods added to GMSNavigatorListener ... - (void)navigatorWillPresentPrompt:(GMSNavigator *)navigator { // Hide any sort of custom UI element. } - (void)navigatorDidDismissPrompt:(GMSNavigator *)navigator { // Show any sort of custom UI element. } ...