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 hedefler için daha doğru rota oluşturma ve daha iyi bir varış deneyimi sağlanır. Konumu ve ek rota bağlamını kodlayan bir dize olan navigationPointToken kullanarak tam konumlara yönlendirme yapabilirsiniz. Ayrıca, enlem ve boylam koordinatlarını yer kimliğiyle birleştirerek bağlamı zenginleştirebilirsiniz.
Arka plan
v10.10'dan önce, konum koordinatlarını veya yer kimliğini kullanarak bir Waypoint tanımlayabiliyordunuz. Yalnızca enlem ve boylama yönlendirme bazen etkili olsa da özellikle büyük mekanlar, parklar veya birden fazla girişi olan binalar için bazen ideal olmayan bırakma veya teslim alma noktalarına yönlendirmeye neden olabilir. Sonuç, en yakın yol segmentine tutturulabilir. Bu segment, en uygun veya doğru erişim noktası olmayabilir.
Gelişmiş rota noktası 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 doğru şekilde yönlendirme için navigationPointToken kullanabilirsiniz.
Bu jeton, Geocoding API'nin Destinations yöntemi çağrılarak elde edilir. Bir yerle ilişkili belirli bir yönlendirilebilir gezinme noktasını ifade eder.
Bir gezinme noktası jetonu belirtmek için:
Geocoding API yanıtının Hedefler yönteminden
navigationPointTokenalın.GMSNavigationWaypointoluştururkennavigationPointTokenolduğunu belirtin.
Not: Bir konum ve PlaceID ile birlikte aynı anda bir gezinme noktası jetonu belirtemezsiniz.
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] initWithNavigationPointToek:@"sampleNavigationPointToken"
Gezinme noktası jetonlarını ve rota jetonlarını kullanma
Geocoding API aracılığıyla bir gezinme noktası jetonu, Routes API'den bir rota jetonu alabilir, ardından hem gezinme noktası jetonunu hem de rota jetonunu Navigation SDK'ya iletebilirsiniz. Bu, yolculuk fiyatını hesaplamak için Routes API'yi kullandığınız ve gezinme noktası jetonunun hassasiyetini istediğiniz araç paylaşımı veya teslimat gibi senaryolarda kullanışlıdır.
Rota jetonu, Navigation SDK'nın seçtiği rotayı fiyatlandırma için kullanılan rotaya yönlendirir. Bu, seyahat için daha uzun veya daha kısa rotaların kullanılma riskini azaltır. Bu durum, "fiyat şokları" oluşturabilir.
Navigasyon noktası jetonu kullanarak konum belirtme ve rota jetonu oluşturma hakkında daha fazla bilgi için Rotalar API'si dokümanlarına bakın. Rota jetonu kullanarak nasıl rota planlayacağınızı öğrenmek için "Rota planlama" başlıklı makaleyi inceleyin.
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:
Yer kimliği ve konumu birleştirme
v10.10'dan itibaren, bir ara nokta oluştururken hem yer kimliği hem de konum koordinatları sağlayabilirsiniz. Bu yöntem, genel yer bağlamını (yer kimliği) sağlamaya devam ederken kesin bir nokta (konum) belirtmek istediğinizde kullanışlıdır. Bu sayede Navigation SDK, hedef binayı vurgulayarak veya yer kimliğiyle ilgili yakındaki ilgi çekici noktaları 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 öncelikle belirtilen
location'yı hedefler. placeId, varış deneyimini iyileştirmek için bağlam olarak kullanılır.- Yedek: SDK, sağlanan
placeIddeğerinin, verilenlocationdeğerinden çok uzak bir özelliğe karşılık geldiğini belirlerseplaceIddeğeri yoksayılır. Bu senaryoda yönlendirme yalnızcalocationkonumuna yapılır 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 | Hedefin yüksek güvenle tahmin edilebildiği durumlarda gösterilir. |
| Yalnızca yer kimliği | yok | grup | yok | Yer kimliği için varsayılan gezinme noktasına giden rotalar | Gönderen yer kimliği |
| Yalnızca gezinme noktası jetonu | yok | yok | grup | Jetonla gösterilen tam navigasyon noktasına giden rotalar | Orijinal Geocoding API'nin hedef yönteminde tanımlanan hedeften |
| Konum koordinatları ve yer kimliği birleştirilmiş | se | 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) |