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 boylam bilgisine 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 yönlendirebilir. 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.
Navigasyon noktası jetonu kullanma
Girişler, yükleme alanları veya belirlenmiş teslim alma alanları gibi belirli erişim noktalarına en hassas rotayı çizmek 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:
Geocoding API yanıtının
SearchDestinationsyöntemindennavigationPointTokendeğerini alın.GMSNavigationWaypointoluştururkennavigationPointTokendeğ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 alabilir, rota jetonu almak için bu jetonu Routes API isteğinde kullanabilir ve ardından yalnızca rota jetonunu Navigation SDK'ya iletebilirsiniz. Rota jetonu, navigasyon noktası jetonunun hassasiyetini korur. Bu, yolculuk fiyatını hesaplamak için Routes API'yi kullandığınız ve navigasyon noktası jetonunun hassasiyetini istediğiniz araç paylaşımı veya teslimat gibi senaryolarda kullanışlıdır.
Rota jetonu sayesinde Navigasyon SDK'sı, 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 ve "fiyat şokları" önlenir.
Routes API'deki navigasyon noktası jetonları ve rota jetonları hakkında daha fazla bilgi için Rota için konumları belirtme ve Rota jetonu alma başlıklı makaleleri inceleyin. Rota jetonu kullanarak rota planlamayı öğrenmek için Rota planlama başlıklı makaleyi inceleyin.
Aşağıdaki şemada, bir araç paylaşımı veya teslimat uygulamasının navigasyon noktası jetonlarını ve rota jetonlarını birlikte nasıl kullanacağı gösterilmektedir. Sürücü uygulaması, 11.3 sürümünden itibaren 7. adımda yalnızca rota jetonunu Navigasyon SDK'sına iletir.
Yer kimliği ile 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, genel yerin bağlamını (yer kimliği) sağlarken kesin bir nokta (konum) belirtmek 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 edilmesi gereken noktalar
Hem placeID hem de location sağladığınızda:
- Rota, öncelikli olarak belirtilen
locationhedefler. placeID, varış deneyimini iyileştiren bağlam sağlar.- Yedek: SDK, sağlanan
placeIDdeğerinin, verilenlocationdeğerinden çok uzakta olan bir özelliğe karşılık geldiğini belirlerseplaceIDdeğerini yoksayar. Bu senaryoda rota yalnızcalocationiç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 isteğinin varış noktaları yönteminde tanımlanan varış noktasından |
| Konum koordinatları ve yer kimliği birleştirildi | grup | grup | yok | Tanımlanan koordinatlara en yakın yol segmentine giden rotalar | Yer kimliğinden (yer kimliği enlem/boylam koordinatlarından çok uzaktaysa gösterilmez) |