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 varış noktaları için daha doğru rota ve daha iyi bir varış deneyimi sunulur. 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
7.4 sürümünden önce, enlem ve boylam 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 navigasyon noktası olmayabilir.
Gelişmiş ara nokta seçenekleri, daha fazla bağlam sağlanmasına olanak tanıyarak bu sorunu çözer.
Gezinme noktası jetonu kullanma
Girişler, yükleme alanları veya belirlenmiş teslim alma alanları gibi belirli navigasyon noktalarına en hassas rotayı çizmek için navigationPointToken kullanabilirsiniz. Bu jeton, Geocoding API'nin destinations yöntemini çağırarak alınır. Bir yerle ilişkili belirli, rotası çizilebilir bir navigasyon noktasını temsil eder.
Navigasyon noktası jetonu belirtmek için:
- Geocoding API'nin Destinations yönteminden gelen yanıttan
navigationPointTokendeğerini alın. - Oluşturucuda
setNavigationPointToken()yöntemini kullanarakWaypointoluşturun.
// 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()
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:
Yer kimliği ile enlem ve boylamı birleştirme
7.4 sürümünden itibaren, Waypoint oluştururken hem yer kimliği hem de enlem ve boylam koordinatlarını sağlayabilirsiniz. Bu yöntem, genel yerin bağlamını (yer kimliği) sağlarken kesin bir nokta (enlem/boylam) 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.
// 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, öncelikli olarak belirtilen
latlnghedefler. placeId, varış deneyimini iyileştirmek için bağlam olarak kullanılır.- Yedek: SDK, sağlanan
placeIddeğerinin verilenlatlngdeğerinden çok uzak bir özelliğe karşılık geldiğini belirlerseplaceIdyok sayılır. Bu senaryoda rota yalnızcalatlngiçin oluşturulur 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 | 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 |
| Enlem/boylam koordinatları ve yer kimliği bir arada | grup | 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) |