با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
توسعه دهندگان منطقه اقتصادی اروپا (EEA).
از پیام OptimizeToursRequest می توان برای درخواست OptimizeTours استفاده کرد.
مثال: درخواست OptimizeTours را ارائه دهید
کتابخانه های کلاینت برای چندین زبان برنامه نویسی محبوب نیز در دسترس هستند. درخواست های OptimizeTours را می توان با استفاده از REST یا gRPC نیز انجام داد.
قبل از درخواست، پارامترهای زیر را با مقادیر مناسب برای محیط خود جایگزین کنید:
PROJECT_NUMBER_OR_ID را روی شماره یا شناسه پروژه Cloud خود تنظیم کنید.
برو
با استفاده از کتابخانه سرویس گیرنده 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)}
با استفاده از کتابخانه سرویس گیرنده جاوا درخواستی را ارسال کنید:
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);}}
ابتدا، یک کپی از بایگانی مشتری Node.js را از نماینده پلتفرم Google Maps خود درخواست کنید.
فایل package.json خود را با استفاده از قطعه JSON زیر پیکربندی کنید:
{"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"}}
با استفاده از کتابخانه سرویس گیرنده Node.js درخواست بدهید:
تاریخ آخرین بهروزرسانی 2025-09-03 بهوقت ساعت هماهنگ جهانی.
[null,null,["تاریخ آخرین بهروزرسانی 2025-09-03 بهوقت ساعت هماهنگ جهانی."],[[["\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)"]]