单个非阻塞优化 API 方法
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
本指南介绍了 OptimizeToursLongRunning
和 OptimizeToursUri
API 方法的实验性发布,用户可以使用这些方法发出单个非阻塞优化请求。在非阻塞优化中,用户会从方法中快速收到一个 Operation proto,该 proto 可用于通过调用 GetOperation
来引用优化状态。如需了解详情,请参阅长时间运行的操作。
与阻塞方法 OptimizeTours
相比,这些非阻塞方法具有可靠性优势,因为在执行优化时,客户端无需保持与服务器的连接。此外,与 BatchOptimizeTours
相比,这些新方法可更轻松地调试故障,因为每项优化都与单个长时间运行的操作 (LRO) 相关联。
如果用户希望以内嵌方式发送优化请求,可以使用 OptimizeToursLongRunning
方法;如果用户希望使用 Google Cloud Storage 上传请求和读取响应,可以使用 OptimizeToursUri
方法。
OptimizeToursLongRunning
示例:发出 OptimizeToursLongRunning
请求
在发出请求之前,请将以下参数替换为适合您环境的值:
OptimizeToursUri
与 BatchOptimizeTours
类似,您可以使用 OptimizeToursUri
继续将优化请求和响应存储在 Google Cloud Storage 中。Cloud Storage URI 必须在 OptimizeToursUri
请求消息中指定。返回的 Operation
状态仅与单个提交的 OptimizeToursRequest
相关联。
示例:发出 OptimizeToursUri
请求
在发出请求之前,请将以下参数替换为适合您环境的值:
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-08-29。
[null,null,["最后更新时间 (UTC):2025-08-29。"],[[["\u003cp\u003eThis guide introduces \u003ccode\u003eOptimizeToursLongRunning\u003c/code\u003e and \u003ccode\u003eOptimizeToursUri\u003c/code\u003e, new methods that enhance reliability and optionally remove the dependency on Google Cloud Storage compared to \u003ccode\u003eBatchOptimizeTours\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eOptimizeToursLongRunning\u003c/code\u003e allows for inline optimization requests without requiring Google Cloud Storage and each request is tracked by its own individual LRO.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eOptimizeToursUri\u003c/code\u003e offers the option to continue using Google Cloud Storage for request and response storage, with the benefit of each request having its own LRO.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eBatchOptimizeTours\u003c/code\u003e method, while still supported, requires all requests and responses to be stored on Google Cloud Storage and only provides one LRO for all the requests.\u003c/p\u003e\n"]]],[],null,["\u003cbr /\u003e\n\n| This product or feature is Experimental (pre-GA). Pre-GA products and features might have limited support, and changes to pre-GA products and features might not be compatible with other pre-GA versions. Pre-GA Offerings are covered by the [Google\n| Maps Platform Service Specific Terms](https://cloud.google.com/maps-platform/terms/maps-service-terms). For more information, see the [launch stage descriptions](/maps/launch-stages).\n\n\u003cbr /\u003e\n\nThis guide introduces the experimental launch of the [`OptimizeToursLongRunning`](/maps/tt/route-optimization/experimental/otlr/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.RouteOptimization.OptimizeToursLongRunning)\nand [`OptimizeToursUri`](/maps/tt/route-optimization/experimental/otlr/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.RouteOptimization.OptimizeToursUri) API methods that allow users to make single\nnon-blocking optimization requests. In a non-blocking optimization, the user\nquickly receives a Operation proto from the method that can be used\nto reference the status of the optimization by calling [`GetOperation`](/maps/documentation/route-optimization/reference/rpc/google.longrunning#google.longrunning.Operations.GetOperation).\nSee [Long Running Operations](https://developers.google.com/maps/documentation/route-optimization/sync-vs-async#long_running_operations)\nfor more details.\n\nThese non-blocking methods provide the\nreliability benefits over the blocking [`OptimizeTours`](/maps/documentation/route-optimization/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.RouteOptimization.OptimizeTours) method since the\nclient does not need to maintain connection to the server while the optimization\nis being executed. Also, these new methods make it easier to debug\nfailures compared to [`BatchOptimizeTours`](/maps/documentation/route-optimization/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.RouteOptimization.BatchOptimizeTours) since each optimization is\nassociated with a single Long-Running Operation (LRO).\n\nUsers who prefer to inline the optimization request can use the\n[`OptimizeToursLongRunning`](/maps/tt/route-optimization/experimental/otlr/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.RouteOptimization.OptimizeToursLongRunning) method while users who prefer to upload the\nrequests and the read response using Google Cloud Storage can use the\n[`OptimizeToursUri`](/maps/tt/route-optimization/experimental/otlr/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.RouteOptimization.OptimizeToursUri) method.\n\nOptimizeToursLongRunning\n\nExample: Make an `OptimizeToursLongRunning` request\n\nBefore making a request, replace the following parameters with values\nappropriate for your environment:\n\n- Ensure you have [Application Default Credentials](https://cloud.google.com/docs/authentication/provide-credentials-adc) configured as described in [Use OAuth](/maps/documentation/route-optimization/oauth-token).\n- Set \u003cvar label=\"project_number\" translate=\"no\"\u003ePROJECT_NUMBER_OR_ID\u003c/var\u003e to your Cloud\n project number or ID.\n\n The following command sends an `OptimizeToursLongRunning` request to the\n Route Optimization API and receives an operation ID associated with it. The\n [`GetOperation`](/maps/documentation/route-optimization/reference/rpc/google.longrunning#google.longrunning.Operations.GetOperation) method can be used to query the status of the operation.\n Once the operation completes, the metadata also contains the final\n [`OptimizeToursResponse`](/maps/tt/route-optimization/experimental/otlr/reference/rpc/google.maps.routeoptimization.v1#optimizetoursresponse). \n\n ```scdoc\n curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeToursLongRunning' \\\n -H \"Content-Type: application/json\" \\\n -H \"Authorization: Bearer $(gcloud auth application-default print-access-token)\" \\\n --data @- \u003c\u003cEOM\n {\n \"model\": {\n \"shipments\": [\n {\n \"pickups\": [\n {\n \"arrivalLocation\": {\n \"latitude\": 37.42506261000996,\n \"longitude\": -122.09535511930135\n }\n }\n ],\n \"deliveries\": [\n {\n \"arrivalLocation\": {\n \"latitude\": 37.42421503206021,\n \"longitude\": -122.09526063135228\n }\n }\n ]\n }\n ],\n \"vehicles\": [\n {\n \"travelMode\": \"DRIVING\",\n \"costPerKilometer\": 1.0\n }\n ],\n }\n }\n EOM\n ```\n | **Note:** this example uses the `--data @-` to read a request from standard input. Use `--data @`\u003cvar label=\"curl_filename\" translate=\"no\"\u003eFilename\u003c/var\u003e to read from a file.\n\nOptimizeToursUri\n\nLike `BatchOptimizeTours`, you can use [`OptimizeToursUri`](/maps/tt/route-optimization/experimental/otlr/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.RouteOptimization.OptimizeToursUri) to continue\nstoring your optimization request and response on Google Cloud Storage.\nCloud Storage URIs must be specified in the `OptimizeToursUri` request message.\nThe `Operation` status returned is associated only with the single submitted\n`OptimizeToursRequest`.\n\nExample: Make an `OptimizeToursUri` request\n\nBefore making a request, replace the following parameters with values\nappropriate for your environment:\n\n- Ensure you have [Application Default Credentials](https://cloud.google.com/docs/authentication/provide-credentials-adc) configured as described in [Use OAuth](/maps/documentation/route-optimization/oauth-token).\n- Set \u003cvar label=\"project_number\" translate=\"no\"\u003ePROJECT_NUMBER_OR_ID\u003c/var\u003e to your Cloud\n project number or ID.\n\n The following command sends an `OptimizeToursUri` request to the\n Route Optimization API and receives an operation ID associated with it. Use\n the [`GetOperation`](/maps/documentation/route-optimization/reference/rpc/google.longrunning#google.longrunning.Operations.GetOperation) method to query the status of the operation.\n Once the operation completes, the [`OptimizeToursResponse`](/maps/tt/route-optimization/experimental/otlr/reference/rpc/google.maps.routeoptimization.v1#optimizetoursresponse) is stored\n remotely on the output URI path provided in the request. \n\n ```scdoc\n curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeToursUri' \\\n -H \"Content-Type: application/json\" \\\n -H \"Authorization: Bearer $(gcloud auth application-default print-access-token)\" \\\n --data @- \u003c\u003cEOM\n {\n \"input\": {\n \"uri\": \"gs://bucket/path/input/object.json\"\n },\n \"output\": {\n \"uri\": \"gs://bucket/path/output/object.json\"\n }\n }\n EOM\n ```\n | **Note:** this example uses the `--data @-` to read a request from standard input. Use `--data @`\u003cvar label=\"curl_filename\" translate=\"no\"\u003eFilename\u003c/var\u003e to read from a file."]]