Navigasyon noktalarına giden rota

iOS için Navigasyon SDK'sı, ara noktaları veya navigasyon noktalarını belirtmek için gelişmiş yöntemler sunar. Bu sayede, özellikle birden fazla girişi veya belirli navigasyon noktaları olan varış noktaları için daha doğru rota oluşturma ve daha iyi bir varış deneyimi sağlanır. Bir konumu ve ek rota bağlamını kodlayan bir dize olan navigationPointToken kullanarak tam konumlara rota oluşturabilirsiniz. Daha fazla bağlam bilgisi için enlem ve boylam koordinatlarını bir yer kimliğiyle de birleştirebilirsiniz.

Arka plan

10.10 sürümünden önce, konum koordinatlarını veya yer kimliğini kullanarak Waypoint tanımlayabiliyordunuz. Yalnızca enlem ve boylama göre rota oluşturmak bazen etkili olsa da özellikle büyük mekanlar, parklar veya birden fazla girişi olan binalar için ideal olmayan bırakma ya da alma noktalarına yol açabilir. Sonuç, en yakın yol segmentine sabitlenebilir. Bu segment, en uygun veya doğru erişim noktası olmayabilir.

Gelişmiş ara nokta seçenekleri, daha fazla bağlam sağlamanıza olanak tanıyarak bu sorunu çözer.

Gezinme noktası jetonu kullanma

Girişler, yükleme alanları veya belirlenmiş teslim alma alanları gibi belirli erişim noktalarına en hassas rotayı oluşturmak için navigationPointToken kullanabilirsiniz.

Bu jeton, Geocoding API'nin Destinations yöntemi çağrılarak alınır. Bir yerle ilişkili belirli, rotası çizilebilir bir navigasyon noktasını temsil eder.

Navigasyon noktası jetonu belirtmek için:

  1. Geocoding API'nin Destinations yönteminden gelen yanıttan bir navigationPointToken alın.

  2. GMSNavigationWaypoint oluştururken navigationPointToken değerini belirtin.

Swift

// Create a waypoint using a navigation endpoint token
let waypointTwo = GMSNavigationWaypoint(
  navigationPointToken: "ChIJALijSXPhQkARHmIozCCbXsASEgkFVjYHGH6PgBFrbM7wl3..",
  title: "Sydney Opera House")

// Route to the waypoint
navigator.setDestinations([waypointTwo]) { [weak self] routeStatus in
   self?.handleRouteCallback(status: routeStatus)
}

Objective-C

GMSNavigationWaypoint *waypointTwo =
    [[GMSNavigationWaypoint alloc] initWithNavigationPointToken:@"sampleNavigationPointToken"
                                                          title:@"Sydney Opera House"];

Navigasyon noktası jetonlarını ve rota jetonlarını kullanma

Geocoding API aracılığıyla bir navigasyon noktası jetonu, Routes API'den bir rota jetonu alabilir ve ardından hem navigasyon noktası jetonunu hem de rota jetonunu Navigasyon SDK'sına iletebilirsiniz. Bu, gezi fiyatını hesaplamak için Rotalar API'yi kullandığınız ve navigasyon noktası jetonunun hassasiyetini istediğiniz araç paylaşımı veya teslimat gibi senaryolarda kullanışlıdır.

Navigation SDK, rota jetonuyla fiyatı hesaplamak için kullandığınız rotada navigasyonu başlatır. Bu sayede, yolculuk için daha uzun veya daha kısa rotaların kullanılması riski azalır. Bu tür rotalar "fiyat şoklarına" neden olabilir.

Navigasyon noktası jetonu kullanarak konum belirtme ve rota jetonu oluşturma hakkında daha fazla bilgi için Routes API dokümanlarını inceleyin. Rota jetonu kullanarak rota planlamayı öğrenmek için "Rota planlama" bölümüne bakın.

Bu diyagramda, bir araç paylaşımı veya teslimat uygulamasının gezinme noktası jetonlarını ve rota jetonlarını birlikte nasıl kullanacağı gösterilmektedir:

Araç paylaşımı veya teslimat kullanım alanı diyagramı
Araç paylaşımı veya teslimat kullanım alanının diyagramı

Yer kimliği ve konumu birleştirme

Sürüm 10.10'dan itibaren, ara nokta oluştururken hem yer kimliği hem de konum koordinatları sağlayabilirsiniz. Bu yöntem, tam bir nokta (konum) belirtmek ve aynı zamanda genel yerin bağlamını (yer kimliği) sağlamak istediğinizde kullanışlıdır. Bu sayede Navigasyon SDK'sı, varış noktasındaki binayı vurgulayarak veya yer kimliğiyle ilgili yakındaki önemli yerleri göstererek daha zengin bir varış deneyimi sunabilir.

Swift

// Create a waypoint using both the latlng and placeID
let waypoint = GMSNavigationWaypoint(
  location: CLLocationCoordinate2DMake(-33.85657945261524, 151.21535034203333),  
  placeID: "ChIJ3S-JXmauEmsRUcIaWtf4MzE",
  title: "Sydney Opera House")

// Route to the waypoint
navigator.setDestinations([waypoint]) { [weak self] routeStatus in
   self?.handleRouteCallback(status: routeStatus)
}

Objective-C

CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationWaypoint *waypoint = [[GMSNavigationWaypoint alloc] initWithLocation:placeID:coordinate title:@"waypoint from location and placeiD"];

Dikkat etmeniz gereken noktalar:

Hem placeID hem de location sağladığınızda:

  • Rota, öncelikli olarak belirtilen location hedefler.
  • placeId, varış deneyimini iyileştirmek için bağlam olarak kullanılır.
  • Yedek: SDK, sağlanan placeId değerinin, verilen location değerinden çok uzak bir özelliğe karşılık geldiğini belirlerse placeId değeri yoksayılır. Bu senaryoda rota yalnızca location için oluşturulur ve yere özgü varış deneyimi geliştirmeleri kullanılamaz.

Geçerli Ara Nokta Yapılandırmalarının Özeti

Spesifikasyon location placeID navigationPointToken Yönlendirme davranışı Hedef vurgulama
Yalnızca konum koordinatları grup yok yok Tanımlanan koordinatlara en yakın yol segmentine giden rotalar Hedef yüksek güvenle tahmin edilebiliyorsa gösterilir.
Yalnızca yer kimliği yok grup yok Yer kimliği için varsayılan navigasyon noktasına giden rotalar Başlangıç Noktası Yer Kimliği
Yalnızca gezinme noktası jetonu yok yok grup Jetonla temsil edilen tam navigasyon noktasına giden rotalar Orijinal Geocoding API'nin hedef yöntemi isteğinde tanımlanan hedeften
Konum koordinatları ve yer kimliği birleştirildi se grup yok Tanımlanan koordinatlara en yakın yol segmentine giden rotalar Yer kimliğinden (Yer kimliği enlem/boylam koordinatlarından çok uzaksa gösterilmez)