İade edilecek bilgileri seçme
Bir rota veya rota matrisini hesaplamak için bir yöntem çağırdığınızda, yanıtta döndürülecek alanları listeleyerek hangi bilgileri istediğinizi belirtmeniz gerekir. Döndürülen alanların varsayılan listesi yoktur. Bu listeyi atlarsanız yöntemler hata döndürür.
Yanıt alanı maskesi oluşturarak alan listesini belirtirsiniz. Ardından, yanıt alanı maskesini $fields
veya fields
URL parametresini ya da HTTP veya gRPC başlığını X-Goog-FieldMask
kullanarak yöntemlerden birine iletirsiniz.
Gereksiz veriler istemediğinizden emin olmak için alan maskesi kullanmak iyi bir tasarım uygulamasıdır. Bu da gereksiz işlem süresinden ve faturalandırılan ücretlerden kaçınmanıza yardımcı olur.
URL parametreleri hakkında daha fazla bilgi için Sistem Parametreleri başlıklı makaleyi inceleyin.
Yanıt alanı maskesi tanımlama
Yanıt alanı maskesi, her yolun yanıt mesajında benzersiz bir alan belirttiği, virgülle ayrılmış bir yol listesidir. Yol, üst düzey yanıt mesajından başlar ve belirtilen alana giden noktayla ayrılmış bir yol kullanır.
Aşağıdaki gibi bir alan yolu oluşturup belirtin:
- Routes API'den ihtiyacınız olan bilgileri içeren alanları bulun. Ayrıntılar için Alan Referansları bölümüne göz atın.
- İhtiyacınız olan alanların yollarını belirleyin ve bunlar için alan maskelerini oluşturun: Ayrıntılar için Kullanmak istediğiniz alan maskesini belirleme başlıklı makaleyi inceleyin.
Alan maskelerini virgülle ayırarak ihtiyacınız olan tüm alanların alan maskelerini birleştirin. Örneğin, rota adımı için
distanceMeters
'yi ve her rota adımı adımının süresini istemek üzere her ikisini de virgülle ayırarak ve boşluk bırakmadan girin:routes.legs.distanceMeters,routes.legs.steps.duration
Alan maskesini API isteğinizle birlikte gönderin. Örneğin, bir cURL isteğinde alan maskesini
-H
veX-Goog-FieldMask
ile belirtirsiniz:-H X-Goog-FieldMask: routes.legs.distanceMeters,routes.legs.steps.duration
Alan Referansları
Alan maskeleri aracılığıyla bir yanıtta isteyebileceğiniz alanları görmek için aşağıdaki listede bağlantısı verilen Routes API referanslarına bakın. Alanları referanstaki gibi büyük/küçük harf kullanmadan belirtin. Örneğin, routePreference
.
Bu referanslar, kullanılabilir alanları içerir. Ancak tam alan maskesi yolunu belirlemek için alanların hiyerarşisini referans olarak kullanmanız gerekir. Alanların hiyerarşisini alma hakkında ayrıntılı bilgi için Kullanmak istediğiniz alan maskesini belirleme başlıklı makaleyi inceleyin.
- Compute rota alanı maskesi
- Rota matrisi alan maskelerini hesaplama
- REST: Döndürülecek yanıt gövdesinin alanlarını belirtir.
- gRPC: Yanıtta döndürülecek RouteMatrixElement nesnesinin alanlarını belirtir.
Hangi alan maskelerinin kullanılacağını belirleme
Kullanmak istediğiniz alanları nasıl belirleyeceğinizi ve bunlar için alan maskelerini nasıl oluşturacağınızı aşağıda bulabilirsiniz:
*
alan maskesi kullanarak tüm alanları isteyin.- İstediğiniz alanlara ait yanıtta alanların hiyerarşisine bakın.
Önceki adımda gösterilen alanların hiyerarşisini kullanarak aşağıdaki biçimi kullanarak alan maskelerinizi oluşturun:
topLevelField[.secondLevelField][.thirdLevelField][...]
Örneğin, bir rotadan alınan bu kısmi yanıt için:
"routes": [ { "legs": [ { "steps": [ {"distanceMeters": 119}, {"distanceMeters": 41} ] } ], "distanceMeters": 160 } ]
Rota adımı için yalnızca distanceMeters
alanını (yani önceki örnekteki son distanceMeters
alanını) döndürmek istiyorsanız alan maskeniz şöyle olur:
routes.legs.distanceMeters
Bunun yerine, rota adımını her adımı için distanceMeters
alanını döndürmek istiyorsanız (yani önceki örnekte steps
altındaki distanceMeters
) alan maskeniz aşağıdaki gibidir:
routes.legs.steps.distanceMeters
Yukarıdaki sonuçla birlikte ikisini de döndürmek istiyorsanız alan maskenizin değeri şöyledir:
routes.legs.distanceMeters,routes.legs.steps.distanceMeters
Örnek alan maskesi yolları
Bu bölümde, REST ve gRPC çağrılarında bir yanıt alanı maskesinin parçası olarak alan yolunun nasıl belirtileceğine dair daha fazla örnek verilmiştir.
computeRoutes
için REST çağrısı
İlk örnekte, bir rota hesaplamak için computeRoutes
yöntemine bir REST çağrısı gönderirsiniz. Bu örnekte, üstbilgide, yanıtta distanceMeters
ve duration
yol alanlarının döndürülmesi için alan maskeleri belirtirsiniz. Alan adına routes
ön ekini eklemeyi unutmayın.
X-Goog-FieldMask: routes.distanceMeters,routes.duration
computeRouteMatrix
için REST çağrısı
Bir rota matrisini hesaplamak için kullanılan REST computeRouteMatrix
yöntemi için başlıkta, her bir kaynak ve hedef kombinasyonu için originIndex
, destinationIndex
ve duration
döndürüleceğini belirtin:
X-Goog-FieldMask: originIndex,destinationIndex,duration
gRPC çağrısı
gRPC için yanıt alanı maskesini içeren bir değişken ayarlayın. Ardından bu değişkeni isteğe iletebilirsiniz.
const ( fieldMask = "routes.distanceMeters,routes.duration,routes.polyline.encodedPolyline" )
Alan yoluyla ilgili dikkat edilmesi gerekenler
Yalnızca ihtiyacınız olan alanları döndürmek için yanıta yalnızca ihtiyacınız olan alanları ekleyin:
- İşleme sürelerini kısaltır. Böylece sonuçlarınız daha düşük gecikmeyle döndürülür.
- Kararlı gecikme performansı sağlar. Tüm alanları veya üst düzeydeki tüm alanları seçerseniz yeni alanlar eklenip yanıtınıza otomatik olarak dahil edildiğinde performansta düşüş yaşayabilirsiniz.
- Daha küçük bir yanıt boyutuna neden olur. Bu da daha yüksek ağ işleme hızına dönüşür.
- Gereksiz veri istememenizi sağlar. Bu da gereksiz işlem süresini ve faturalandırılan ücretleri önlemeye yardımcı olur.
Alan maskesi oluşturma hakkında daha fazla bilgi için field_mask.proto dosyasını inceleyin.
Rota jetonu isteme
Routes API'nin oluşturulan rotalar için rota jetonları döndürmesini istemek üzere aşağıdaki adımları uygulayın:
- Rota jetonu döndürmek için gereken aşağıdaki parametreleri ayarlayın:
travelMode
değeriniDRIVE
olarak ayarlayın.routingPreference
öğesiniTRAFFIC_AWARE
veyaTRAFFIC_AWARE_OPTIMAL
olarak ayarlayın.
- Rotadaki yol işaretçilerinizin hiçbirinin
via
yol işaretçisi olmadığından emin olun. - Rota jetonu döndürmek için
routes.routeToken
alan maskesini belirtin:X-Goog-FieldMask: routes.routeToken
Navigasyon SDK'sında planlanmış rotanız için rota jetonunu kullanabilirsiniz. Daha fazla bilgi için Rota planlama (Android) veya Rota planlama (iOS) başlıklı makaleyi inceleyin.
Rota jetonu örneği
Tek bir kaynak ve tek bir hedefe sahip rota için örnek bir cURL istek gövdesi aşağıda verilmiştir. Bu örnekte, rota jetonu istemek için alan maskeleri, rota süresi, mesafe ve rota poli çizgisi kullanılmaktadır:
curl -X POST -d {"origin":{ "location": { "latLng":{ "latitude": -37.8167, "longitude": 144.9619 } } }, "destination":{ "location": { "latLng":{ "latitude":-37.8155, "longitude": 144.9663 } } }, "routingPreference":"TRAFFIC_AWARE", "travelMode":"DRIVE" } -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H X-Goog-FieldMask: routes.routeToken,routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline 'https://routes.googleapis.com/directions/v2:computeRoutes'
Daha fazla bilgi için Compute Routes API referansı başlıklı makaleyi inceleyin.