Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Développeurs de l'Espace économique européen (EEE)
Un message OptimizeToursRequest peut être utilisé pour effectuer une requête OptimizeTours.
Exemple : Envoyer une requête OptimizeTours
Des bibliothèques clientes sont également disponibles pour plusieurs langages de programmation courants.
Les requêtes OptimizeTours peuvent également être effectuées à l'aide de REST ou gRPC.
Avant d'envoyer une requête, remplacez les paramètres suivants par des valeurs adaptées à votre environnement :
Définissez PROJECT_NUMBER_OR_ID sur le numéro ou l'ID de votre projet Cloud.
Go
Envoyez une requête à l'aide de la bibliothèque cliente Go :
import("context""fmt"routeoptimization"cloud.google.com/go/maps/routeoptimization/apiv1""google.golang.org/genproto/googleapis/type/latlng"rpb"cloud.google.com/go/maps/routeoptimization/apiv1/routeoptimizationpb")funcoptimizeTours(projectIDstring)(*rpb.OptimizeToursResponse,error){ctx:=context.Background()c,err:=routeoptimization.NewClient(ctx)iferr!=nil{returnnil,fmt.Errorf("routeoptimization client: %w",err)}deferc.Close()// See https://pkg.go.dev/cloud.google.com/go/maps/routeoptimization/apiv1/routeoptimizationpb#OptimizeToursRequest.req:=&rpb.OptimizeToursRequest{Parent:"projects/"+projectID,Model:&rpb.ShipmentModel{Shipments:[]*rpb.Shipment{&rpb.Shipment{Deliveries:[]*rpb.Shipment_VisitRequest{{ArrivalLocation:&latlng.LatLng{Latitude:48.880942,Longitude:2.323866}},},},},Vehicles:[]*rpb.Vehicle{{StartLocation:&latlng.LatLng{Latitude:48.863102,Longitude:2.341204},EndLocation:&latlng.LatLng{Latitude:48.86311,Longitude:2.341205},},},},}returnc.OptimizeTours(ctx,req)}
Envoyez une requête à l'aide de la bibliothèque cliente Java :
importcom.google.maps.routeoptimization.v1.OptimizeToursRequest;importcom.google.maps.routeoptimization.v1.OptimizeToursResponse;importcom.google.maps.routeoptimization.v1.RouteOptimizationClient;importcom.google.maps.routeoptimization.v1.RouteOptimizationSettings;importcom.google.maps.routeoptimization.v1.Shipment;importcom.google.maps.routeoptimization.v1.Shipment.VisitRequest;importcom.google.maps.routeoptimization.v1.ShipmentModel;importcom.google.maps.routeoptimization.v1.Vehicle;importcom.google.type.LatLng;importjava.time.Duration;publicclassOptimizeTours{publicstaticOptimizeToursResponseoptimizeTours(StringprojectId)throwsException{// Optional: method calls that last tens of minutes may be interrupted// without enabling a short keep-alive interval.RouteOptimizationSettingsclientSettings=RouteOptimizationSettings.newBuilder().setTransportChannelProvider(RouteOptimizationSettings.defaultGrpcTransportProviderBuilder().setKeepAliveTimeDuration(Duration.ofSeconds(30)).build()).build();RouteOptimizationClientclient=RouteOptimizationClient.create(clientSettings);OptimizeToursRequestrequest=OptimizeToursRequest.newBuilder().setParent("projects/"+projectId).setModel(ShipmentModel.newBuilder().addShipments(Shipment.newBuilder().addPickups(VisitRequest.newBuilder().setArrivalLocation(LatLng.newBuilder().setLatitude(48.8).setLongitude(2.4)))).addVehicles(Vehicle.newBuilder().setStartLocation(LatLng.newBuilder().setLatitude(48.9).setLongitude(2.5)))).build();returnclient.optimizeTours(request);}}
Tout d'abord, demandez une copie de l'archive du client Node.js à votre représentant Google Maps Platform.
Configurez votre fichier package.json à l'aide de l'extrait JSON suivant :
{"name":"route-optimization-example","version":"1.0.0","description":"A RouteOptimization example.","main":"main.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","dependencies":{"@googlemaps/routeoptimization":"^0.1.0"}}
Envoyez une requête à l'aide de la bibliothèque cliente Node.js :
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/04 (UTC).
[null,null,["Dernière mise à jour le 2025/09/04 (UTC)."],[[["\u003cp\u003eUse an \u003ccode\u003eOptimizeToursRequest\u003c/code\u003e message to make an \u003ccode\u003eOptimizeTours\u003c/code\u003e request to the Route Optimization API.\u003c/p\u003e\n"],["\u003cp\u003eClient libraries are available in Go, Java, Python, and Node.js for making requests, in addition to REST and gRPC options.\u003c/p\u003e\n"],["\u003cp\u003eBefore making a request, ensure Application Default Credentials are configured and replace project placeholders with your project ID.\u003c/p\u003e\n"],["\u003cp\u003eRequests include details such as shipments, vehicles, their locations, and operational time windows.\u003c/p\u003e\n"],["\u003cp\u003eUpon successful completion, an \u003ccode\u003eOptimizeToursResponse\u003c/code\u003e message will be returned, which can be further interpreted.\u003c/p\u003e\n"]]],["The document outlines how to use the `OptimizeTours` request via client libraries (Go, Java, Python, Node.js) or REST/gRPC. It involves configuring Application Default Credentials and setting the project ID. Requests specify shipment details like pickup/delivery locations and vehicle start/end locations, alongside global start/end times, using `OptimizeToursRequest`. The examples provided in the content show how to create and send this request using each client library or using the command-line interface through a REST request.\n"],null,["**European Economic Area (EEA) developers** If your billing address is in the European Economic Area, effective on 8 July 2025, the [Google Maps Platform EEA Terms of Service](https://cloud.google.com/terms/maps-platform/eea) will apply to your use of the Services. Functionality varies by region. [Learn more](/maps/comms/eea/faq).\n\nAn `OptimizeToursRequest` message can be used to make an `OptimizeTours`\nrequest.\n\nExample: Make an `OptimizeTours` request\n\nClient libraries are also available for several popular programming languages.\n`OptimizeTours` requests can also be made using either [REST](/maps/documentation/route-optimization/reference/rest/v1/projects/optimizeTours) or [gRPC](/maps/documentation/route-optimization/reference/rpc/google.maps.routeoptimization.v1#routeoptimization).\n| **Note:** See [installation instructions](/maps/documentation/route-optimization/client-libraries) for client libraries used for the following examples.\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\nGo\n\nMake a request using the Go client library: \n\n```go\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\trouteoptimization \"cloud.google.com/go/maps/routeoptimization/apiv1\"\n\t\"google.golang.org/genproto/googleapis/type/latlng\"\n\n\trpb \"cloud.google.com/go/maps/routeoptimization/apiv1/routeoptimizationpb\"\n)\n\nfunc optimizeTours(projectID string) (*rpb.OptimizeToursResponse, error) {\n\tctx := context.Background()\n\tc, err := routeoptimization.NewClient(ctx)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"routeoptimization client: %w\", err)\n\t}\n\tdefer c.Close()\n\n\t// See https://pkg.go.dev/cloud.google.com/go/maps/routeoptimization/apiv1/routeoptimizationpb#OptimizeToursRequest.\n\treq := &rpb.OptimizeToursRequest{\n\t\tParent: \"projects/\" + projectID,\n\t\tModel: &rpb.ShipmentModel{\n\t\t\tShipments: []*rpb.Shipment{\n\t\t\t\t&rpb.Shipment{\n\t\t\t\t\tDeliveries: []*rpb.Shipment_VisitRequest{\n\t\t\t\t\t\t{ArrivalLocation: &latlng.LatLng{Latitude: 48.880942, Longitude: 2.323866}},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tVehicles: []*rpb.Vehicle{\n\t\t\t\t{\n\t\t\t\t\tStartLocation: &latlng.LatLng{Latitude: 48.863102, Longitude: 2.341204},\n\t\t\t\t\tEndLocation: &latlng.LatLng{Latitude: 48.86311, Longitude: 2.341205},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\treturn c.OptimizeTours(ctx, req)\n}\nhttps://github.com/GoogleCloudPlatform/golang-samples/blob/0f9d83276109eb453cf6bd6ca044bd9b99528545/routeoptimization/snippets/optimize_tours.go#L18-L57\n```\n\nJava\n\nMake a request using the Java client library: \n\n```java\nimport com.google.maps.routeoptimization.v1.OptimizeToursRequest;\nimport com.google.maps.routeoptimization.v1.OptimizeToursResponse;\nimport com.google.maps.routeoptimization.v1.RouteOptimizationClient;\nimport com.google.maps.routeoptimization.v1.RouteOptimizationSettings;\nimport com.google.maps.routeoptimization.v1.Shipment;\nimport com.google.maps.routeoptimization.v1.Shipment.VisitRequest;\nimport com.google.maps.routeoptimization.v1.ShipmentModel;\nimport com.google.maps.routeoptimization.v1.Vehicle;\nimport com.google.type.LatLng;\nimport java.time.Duration;\n\npublic class OptimizeTours {\n public static OptimizeToursResponse optimizeTours(String projectId) throws Exception {\n // Optional: method calls that last tens of minutes may be interrupted\n // without enabling a short keep-alive interval.\n RouteOptimizationSettings clientSettings = RouteOptimizationSettings\n .newBuilder()\n .setTransportChannelProvider(RouteOptimizationSettings\n .defaultGrpcTransportProviderBuilder()\n .setKeepAliveTimeDuration(Duration.ofSeconds(30))\n .build()).build();\n\n RouteOptimizationClient client = RouteOptimizationClient.create(clientSettings);\n OptimizeToursRequest request =\n OptimizeToursRequest.newBuilder()\n .setParent(\"projects/\" + projectId)\n .setModel(\n ShipmentModel.newBuilder()\n .addShipments(\n Shipment.newBuilder()\n .addPickups(\n VisitRequest.newBuilder()\n .setArrivalLocation(\n LatLng.newBuilder().setLatitude(48.8).setLongitude(2.4))))\n .addVehicles(\n Vehicle.newBuilder()\n .setStartLocation(\n LatLng.newBuilder().setLatitude(48.9).setLongitude(2.5))))\n .build();\n return client.optimizeTours(request);\n }\n}https://github.com/GoogleCloudPlatform/java-docs-samples/blob/70c2dc2617fdd887f13209ac82e5e9d373d7bfff/routeoptimization/snippets/src/main/java/com/example/OptimizeTours.java#L46-L75\n```\n\nPython\n\nThe Python client is available on\n[PyPI](https://pypi.org/project/google-maps-routeoptimization/). \n\n pip install google-maps-routeoptimization\n\nMake a request using the Python client library: \n\n```python\nfrom google.maps import routeoptimization_v1 as ro\nfrom datetime import datetime\n\nclient = ro.RouteOptimizationClient()\nrequest = ro.OptimizeToursRequest(\n parent=\"projects/\u003cvar label=\"project_number\" translate=\"no\"\u003ePROJECT_NUMBER_OR_ID\u003c/var\u003e\",\n model={\n \"shipments\": [\n {\n \"pickups\": [\n {\n \"arrival_location\": {\n \"latitude\": 37.738818,\n \"longitude\": -122.4161\n }\n }\n ],\n \"deliveries\": [\n {\n \"arrival_location\": {\n \"latitude\": 37.79581,\n \"longitude\": -122.4218856\n }\n }\n ]\n }\n ],\n \"vehicles\": [\n {\n \"start_location\": {\n \"latitude\": 37.738818,\n \"longitude\": -122.4161\n },\n \"end_location\": {\n \"latitude\": 37.738818,\n \"longitude\": -122.4161\n },\n \"cost_per_kilometer\": 1.0\n }\n ],\n \"global_start_time\": datetime.fromisoformat(\"2024-02-13T00:00:00.000Z\"),\n \"global_end_time\": datetime.fromisoformat(\"2024-02-14T06:00:00.000Z\")\n }\n)\nresponse = client.optimize_tours(request=request)\nprint(response)\n```\n\nNode.js\n\nFirst, request a copy of the Node.js client archive from your Google Maps\nPlatform representative.\n\nConfigure your `package.json` file using the following JSON snippet: \n\n {\n \"name\": \"route-optimization-example\",\n \"version\": \"1.0.0\",\n \"description\": \"A RouteOptimization example.\",\n \"main\": \"main.js\",\n \"scripts\": {\n \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n },\n \"author\": \"\",\n \"dependencies\": {\n \"@googlemaps/routeoptimization\": \"^0.1.0\"\n }\n }\n\nMake a request using the Node.js client library: \n\n```javascript\n'use strict';\n\nconst {RouteOptimizationClient} = require('@googlemaps/routeoptimization').v1;\n\nconst routeoptimizationClient = new RouteOptimizationClient();\n\nasync function callOptimizeTours() {\n const response = await routeoptimizationClient.optimizeTours({\n \"parent\": \"projects/\u003cvar label=\"project_number\" translate=\"no\"\u003ePROJECT_NUMBER_OR_ID\u003c/var\u003e\",\n \"model\": {\n \"shipments\": [\n {\n \"pickups\": [\n {\n \"arrivalLocation\": {\n \"latitude\": 37.73881799999999,\n \"longitude\": -122.4161\n }\n }\n ],\n \"deliveries\": [\n {\n \"arrivalLocation\": {\n \"latitude\": 37.79581,\n \"longitude\": -122.4218856\n }\n }\n ]\n }\n ],\n \"vehicles\": [\n {\n \"startLocation\": {\n \"latitude\": 37.73881799999999,\n \"longitude\": -122.4161\n },\n \"endLocation\": {\n \"latitude\": 37.73881799999999,\n \"longitude\": -122.4161\n },\n \"costPerKilometer\": 1.0\n }\n ],\n \"globalStartTime\": \"2024-02-13T00:00:00.000Z\",\n \"globalEndTime\": \"2024-02-14T06:00:00.000Z\"\n }\n });\n console.log(JSON.stringify(response));\n}\ncallOptimizeTours();\n```\n\nREST\n\nThe following command sends an `OptimizeTours` request to the Route\nOptimization API and receives a response synchronously. \n\n```scdoc\ncurl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \\\n-H \"Content-Type: application/json\" \\\n-H \"Authorization: Bearer $(gcloud auth application-default print-access-token)\" \\\n--data @- \u003c\u003c EOM\n{\n \"model\": {\n \"shipments\": [\n {\n \"pickups\": [\n {\n \"arrivalLocation\": {\n \"latitude\": 37.73881799999999,\n \"longitude\": -122.4161\n }\n }\n ],\n \"deliveries\": [\n {\n \"arrivalLocation\": {\n \"latitude\": 37.79581,\n \"longitude\": -122.4218856\n }\n }\n ]\n }\n ],\n \"vehicles\": [\n {\n \"startLocation\": {\n \"latitude\": 37.73881799999999,\n \"longitude\": -122.4161\n },\n \"endLocation\": {\n \"latitude\": 37.73881799999999,\n \"longitude\": -122.4161\n },\n \"costPerKilometer\": 1.0\n }\n ],\n \"globalStartTime\": \"2024-02-13T00:00:00.000Z\",\n \"globalEndTime\": \"2024-02-14T06:00:00.000Z\"\n }\n}\nEOM\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\nOnce the request completes, you'll receive a response message.\n\n[Next: Interpret the Response](/maps/documentation/route-optimization/interpret-response)"]]