Bu sayfada, Roads Selection API'yi kullanarak daha önce oluşturduğunuz rotaların nasıl güncelleneceği açıklanmaktadır:
- Rotayı güncelleme:
patchuç noktasını kullanarak tek bir rotanın ayrıntılarını güncelleyin. - Rotaları toplu güncelleme:
batchUpdateuç noktasını kullanarak tek bir istekte birden fazla rotanın ayrıntılarını güncelleyin.
Rota güncelleme
Bir rotayı güncellemek için patch uç noktasına bir PATCH isteği gönderin:
https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID?updateMask=UPDATE_MASK
İstek gövdesi, güncellenecek SelectedRoute alanlarını içeren bir JSON nesnesi olmalıdır. Güncellenebilir alanlar arasında displayName, routeAttributes ve dynamicRoute yer alır. Rota geometrisini güncellerken (dynamicRoute) dynamicRoute nesnesinin tamamını (başlangıç, hedef ve ara yol noktaları) sağlamanız gerekir. Alt alanların kısmi olarak güncellenmesi desteklenmez. name, createTime ve state gibi salt okunur sistem alanları değiştirilemez. BigQuery'deki geçmiş veriler, eski ve güncellenmiş geometriye ait verileri aynı selectedRouteId altında tutar. Ayrı geçmiş verilerine ihtiyacınız varsa güncelleme yapmak yerine yeni bir rota oluşturun.
Bir rotanın geometrisini güncellemek (dynamicRoute) için rotanın yeniden doğrulanması gerekir.
Rota STATE_RUNNING veya STATE_INVALID durumundaysa geometri güncellemelerine izin verilir. Rota STATE_VALIDATING veya STATE_DELETING durumundaysa güncellemeler reddedilir. Daha fazla bilgi için Doğrulama ve rota durumları başlıklı makaleyi inceleyin.
displayName veya routeAttributes gibi meta verilerin güncellenmesine STATE_DELETING dışındaki tüm eyaletlerde izin verilir.
Aşağıdaki kod örneğinde, patch uç noktasına gönderilen bir PATCH isteğinin yapısı gösterilmektedir:
curl -X PATCH -d '{
"dynamicRoute": {
"origin": {
"latitude": 38.5817,
"longitude": -121.4944
},
"destination": {
"latitude": 38.5449,
"longitude": -121.7405
}
}
}' \
-H 'X-Goog-User-Project: PROJECT_NUMBER' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
"https://roads.googleapis.com/selection/v1/projects/"\
"PROJECT_NUMBER/selectedRoutes/"\
"SELECTED_ROUTE_ID?updateMask=dynamicRoute"İşlem başarılı olduğunda API, güncellenen SelectedRoute kaynağını döndürür:
{ "name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID", "dynamicRoute": { "origin": { "latitude": 38.5817, "longitude": -121.4944 }, "destination": { "latitude": 38.5449, "longitude": -121.7405 } }, "createTime": "2026-08-14T20:58:41.345418Z", "state": "STATE_VALIDATING" }
Rotaları toplu olarak güncelleme
Tek bir istekte birden fazla rotayı güncellemek için batchUpdate uç noktasını kullanın. Bu uç nokta,tek bir çağrıda 1.000'e kadar rotayı güncellemenize olanak tanır. Toplu güncellemeler atomiktir: İstekteki herhangi bir rota doğrulanamazsa veya güncellenemezse topludaki hiçbir rota değiştirilmez.
batchUpdate uç noktasına bir POST isteği gönderin:
https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes:batchUpdate
İstek gövdesi, bir requests dizisi içeren bir JSON nesnesi olmalıdır.
Bu dizideki her nesne, rotayı name, isteğe bağlı bir öğe düzeyinde updateMask ve güncellenecek selectedRoute alanlarını belirten bir UpdateSelectedRouteRequest nesnesidir.
updateMask, güncellenecek alanların listesini (displayName, routeAttributes veya dynamicRoute nesnesinin tamamı) belirten isteğe bağlı bir parametredir. updateMask=* ayarı, tam değişimi gösterir. updateMask
değeri, requests içindeki her bir öğede belirtilebilir veya toplu istek gövdesinin en üst düzeyine taşınarak topludaki tüm güncellenen rotalara uygulanabilir.
updateMask atlanırsa istekte doldurulan tüm güncellenebilir alanların güncelleneceği varsayılır. Bir updateMask hem toplu işlem düzeyinde hem de öğe düzeyinde ayarlanırsa bu değerler eşleşmelidir. Çakışan maskelerin belirtilmesi INVALID_ARGUMENT hatasına neden olur.
Aşağıdaki kod örneğinde, batchUpdate uç noktasına gönderilen bir POST isteğinin yapısı gösterilmektedir:
curl -X POST -d '{
"requests": [
{
"selectedRoute": {
"name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID_1",
"displayName": "DISPLAY_NAME_1",
"dynamicRoute": {
"origin": {"latitude": 37.5, "longitude": -122.1},
"destination": {"latitude": 37.8, "longitude": -122.5}
}
},
"updateMask": "displayName,dynamicRoute"
},
{
"selectedRoute": {
"name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID_2",
"displayName": "DISPLAY_NAME_2",
"dynamicRoute": {
"origin": {"latitude": 37.5, "longitude": -122.1},
"destination": {"latitude": 37.8, "longitude": -122.5}
}
},
"updateMask": "displayName,dynamicRoute"
}
]}' \
-H 'X-Goog-User-Project: PROJECT_NUMBER' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
"https://roads.googleapis.com/selection/v1/projects/"\
"PROJECT_NUMBER/selectedRoutes:batchUpdate"Başarılı olursa API, güncellenen SelectedRoute kaynaklarının dizisini içeren bir yanıt döndürür:
{ "selectedRoutes": [ { "name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID_1", "displayName": "DISPLAY_NAME_1", "dynamicRoute": { "origin": { "latitude": 37.5, "longitude": -122.1 }, "destination": { "latitude": 37.8, "longitude": -122.5 } }, "createTime": "2026-08-14T20:58:41.345418Z", "state": "STATE_VALIDATING" }, { "name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID_2", "displayName": "DISPLAY_NAME_2", "dynamicRoute": { "origin": { "latitude": 37.5, "longitude": -122.1 }, "destination": { "latitude": 37.8, "longitude": -122.5 } }, "createTime": "2026-08-14T20:58:41.345418Z", "state": "STATE_VALIDATING" } ] }