Android 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
v7.4'ten önce, enlem ve boylam koordinatları ya da yer kimliği kullanarak bir Waypoint tanımlayabiliyordunuz. Bazen etkili olsa da yalnızca enlem ve boylama yönlendirme, ö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 yol açabilir. Sonuç, en yakın yol segmentine tutturulabilir. Bu segment, en uygun veya doğru gezinme noktası olmayabilir.
Gelişmiş rota noktası seçenekleri, daha fazla bağlam bilgisi sağlanmasına olanak tanıyarak bu sorunu giderir.
Gezinme noktası jetonu kullanma
Girişler, yükleme rampaları veya belirlenmiş teslim alma alanları gibi belirli gezinme 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 Destinations yönteminden
navigationPointTokenalın. - Oluşturucuda
setNavigationPointToken()yöntemini kullanarakWaypointoluşturun.
Not: setNavigationPointToken() kullanırken aynı anda setLatLng() veya setPlaceIdString() kullanamazsınız. Bu yöntemler setNavigationPointToken() ile birlikte kullanılamaz.
// Assuming 'navPointToken' is a String obtained from the destinations method of the Geocoding API
// Assuming 'destinationName' is a String title for the waypoint
Waypoint waypointWithToken = Waypoint.builder()
.setTitle(destinationName)
.setNavigationPointToken(navPointToken)
.build();
// Use this waypoint in navigator.setDestinations()
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 ve 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 tarafından seçilen rotayı fiyatlandırma için kullanılan rotaya doğru yönlendirir. Bu, yolculuk için daha uzun veya daha kısa rotaların kullanılma riskini azaltır. Bu durum, "fiyat şoklarına" neden olabilir.
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 ile enlem ve boylamı birleştirme
v7.4'ten itibaren Waypoint oluştururken hem yer kimliği hem de enlem ve boylam koordinatları sağlayabilirsiniz. Bu yöntem, genel yerin bağlamını (yer kimliği) sağlamaya devam ederken kesin bir nokta (enlem/boylam) belirtmek istediğinizde kullanışlıdır. Bu sayede Navigation SDK, hedef binayı vurgulayarak veya yer kimliğiyle ilgili yakındaki ilgi çekici yerleri göstererek daha zengin bir varış deneyimi sunabilir.
// Assuming 'placeId' is the Place ID String
// Assuming 'lat' and 'lng' are the double values for latitude and longitude
// Assuming 'destinationName' is a String title for the waypoint
Waypoint waypointWithPlaceIdAndLatLng = Waypoint.builder()
.setTitle(destinationName)
.setPlaceIdString(placeId)
.setLatLng(lat, lng)
.build();
// Use this waypoint in navigator.setDestinations()
Dikkat edilmesi gereken noktalar
Hem placeId hem de latlng sağladığınızda:
- Rota öncelikle belirtilen
latlng'yı hedefler. placeId, varış deneyimini iyileştirmek için bağlam olarak kullanılır.- Yedek: SDK, sağlanan
placeIdöğesinin, verilenlatlngöğesinden çok uzak bir özelliğe karşılık geldiğini belirlerseplaceIdöğesi yoksayılır. Bu senaryoda yönlendirme yalnızcalatlngkonumuna yapılır ve yere özgü varış deneyimi geliştirmeleri kullanılamaz.
Geçerli ara nokta yapılandırmalarının özeti
| Yöntem | setLatLng() |
setPlaceIdString() |
setNavigationPointToken() |
Yönlendirme davranışı | Hedef vurgulama |
|---|---|---|---|---|---|
| Yalnızca enlem/boylam 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 |
| Enlem/boylam koordinatları ve yer kimliği birleştirilmiş | 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) |