Update selected routes

Bu sayfada, Roads Selection API'yi kullanarak daha önce oluşturduğunuz rotaları nasıl güncelleyeceğiniz açıklanmaktadır:

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, dynamicRoute ve dynamicRouting (rotanın sabit veya dinamik olması) bulunur. Rota ara noktalarını (dynamicRoute) güncellerken dynamicRoute nesnesinin tamamını (başlangıç, varış ve ara noktalar) sağlamanız gerekir. Kısmi alt alan güncellemeleri desteklenmez. name, createTime ve state gibi salt okunur sistem alanları değiştirilemez. BigQuery'deki geçmiş veriler, önceki ve güncellenmiş ara noktaların verilerini aynı selectedRouteId altında saklar. Ayrı geçmiş verilere ihtiyacınız varsa güncelleme yapmak yerine yeni bir rota oluşturun.

Bir rotanın ara noktalarını (dynamicRoute) güncellemek, rotanın yeniden doğrulanmasını tetikler. routes_status BigQuery tablosundaki static_route_geometry ve road_segment_ids alanları buna göre güncellenir.

Rota STATE_RUNNING veya STATE_INVALID durumundayken ara nokta güncellemelerine izin verilir. Rota STATE_VALIDATING veya STATE_DELETING durumundayken ise güncellemeler reddedilir. Daha fazla bilgi için Doğrulama ve rota durumları başlıklı makaleyi inceleyin. displayName, routeAttributes veya dynamicRouting 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ı olursa API, güncellenmiş 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",
  "dynamicRouting": TRUE_OR_FALSE
}

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 rotanın doğrulaması başarısız olursa veya rota güncellenemezse gruptaki 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, requests dizisi içeren bir JSON nesnesi olmalıdır. Bu dizideki her nesne, rota name, isteğe bağlı öğe düzeyinde updateMask ve güncellenecek selectedRoute alanlarını belirten bir UpdateSelectedRouteRequest nesnesidir.

updateMask, güncellenecek alanların listesini (displayName, routeAttributes, dynamicRouting veya dynamicRoute nesnesinin tamamı) belirten isteğe bağlı bir parametredir. updateMask=* ayarı, tam bir değişimi gösterir. requests içindeki her bir öğede updateMask belirtilebilir veya toplu istek gövdesinin en üst düzeyine taşınarak toplu istekteki tüm güncellenmiş rotalara uygulanabilir. updateMask atlanırsa istekte doldurulan tüm güncellenebilir alanların güncelleneceği varsayılır. updateMask hem toplu düzeyde hem de öğe düzeyinde ayarlanmışsa eşleşmeleri gerekir. Çakışan maskeler belirtildiğinde INVALID_ARGUMENT hatası oluşur.

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"

İşlem başarılı olursa API, güncellenen SelectedRoute kaynaklarının bir 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",
      "dynamicRouting": TRUE_OR_FALSE
    },
    {
      "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",
      "dynamicRouting": TRUE_OR_FALSE
    }
  ]
}