Tworzenie żądania do interfejsu API

Aby przesłać prośbę OptimizeTours, możesz użyć wiadomości OptimizeToursRequest.

Przykład: wysyłanie żądania OptimizeTours

Dostępne są również biblioteki klienta dla kilku popularnych języków programowania. OptimizeTours można też wysyłać za pomocą interfejsu REST lub gRPC.

Zanim wyślesz żądanie, zastąp te parametry wartościami odpowiednimi dla Twojego środowiska:

Przeczytaj

Prześlij żądanie za pomocą biblioteki klienta w języku 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"
)

func optimizeTours(projectID string) (*rpb.OptimizeToursResponse, error) {
	ctx := context.Background()
	c, err := routeoptimization.NewClient(ctx)
	if err != nil {
		return nil, fmt.Errorf("routeoptimization client: %w", err)
	}
	defer c.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},
				},
			},
		},
	}
	return c.OptimizeTours(ctx, req)
}

Java

Prześlij żądanie za pomocą biblioteki klienta w Javie:

import com.google.maps.routeoptimization.v1.OptimizeToursRequest;
import com.google.maps.routeoptimization.v1.OptimizeToursResponse;
import com.google.maps.routeoptimization.v1.RouteOptimizationClient;
import com.google.maps.routeoptimization.v1.Shipment;
import com.google.maps.routeoptimization.v1.Shipment.VisitRequest;
import com.google.maps.routeoptimization.v1.ShipmentModel;
import com.google.maps.routeoptimization.v1.Vehicle;
import com.google.type.LatLng;

public class OptimizeTours {
  public static OptimizeToursResponse optimizeTours(String projectId) throws Exception {
    RouteOptimizationClient client = RouteOptimizationClient.create();
    OptimizeToursRequest request =
        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();
    return client.optimizeTours(request);
  }
}

Python

Klient Python jest dostępny PyPI.

pip install google-maps-routeoptimization

Wyślij żądanie, korzystając z biblioteki klienta w języku Python:

from google.maps import routeoptimization_v1 as ro
from datetime import datetime

client = ro.RouteOptimizationClient()
request = ro.OptimizeToursRequest(
    parent="projects/PROJECT_NUMBER_OR_ID",
    model={
      "shipments": [
         {
          "pickups": [
            {
              "arrival_location": {
                "latitude": 37.738818,
                "longitude": -122.4161
              }
            }
          ],
          "deliveries": [
            {
              "arrival_location": {
                "latitude": 37.79581,
                "longitude": -122.4218856
              }
            }
          ]
        }
      ],
      "vehicles": [
        {
          "start_location": {
            "latitude": 37.738818,
            "longitude": -122.4161
          },
          "end_location": {
            "latitude": 37.738818,
            "longitude": -122.4161
          },
          "cost_per_kilometer": 1.0
        }
      ],
      "global_start_time": datetime.fromisoformat("2024-02-13T00:00:00.000Z"),
      "global_end_time": datetime.fromisoformat("2024-02-14T06:00:00.000Z")
    }
)
response = client.optimize_tours(request=request)
print(response)

Node.js

Najpierw poproś przedstawiciela Google Maps Platform o kopię archiwum klienta Node.js.

Skonfiguruj plik package.json, używając tego fragmentu kodu 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"
    }
  }

Wyślij żądanie za pomocą biblioteki klienta w środowisku Node.js:

'use strict';

const {RouteOptimizationClient} = require('@googlemaps/routeoptimization').v1;

const routeoptimizationClient = new RouteOptimizationClient();

async function callOptimizeTours() {
  const response = await routeoptimizationClient.optimizeTours({
    "parent": "projects/PROJECT_NUMBER_OR_ID",
    "model": {
      "shipments": [
        {
          "pickups": [
            {
              "arrivalLocation": {
                "latitude": 37.73881799999999,
                "longitude": -122.4161
              }
            }
          ],
          "deliveries": [
            {
              "arrivalLocation": {
                "latitude": 37.79581,
                "longitude": -122.4218856
              }
            }
          ]
        }
      ],
      "vehicles": [
        {
          "startLocation": {
            "latitude": 37.73881799999999,
            "longitude": -122.4161
          },
          "endLocation": {
            "latitude": 37.73881799999999,
            "longitude": -122.4161
          },
          "costPerKilometer": 1.0
        }
      ],
      "globalStartTime": "2024-02-13T00:00:00.000Z",
      "globalEndTime": "2024-02-14T06:00:00.000Z"
    }
  });
  console.log(JSON.stringify(response));
}
callOptimizeTours();

REST

Poniższe polecenie wysyła do trasy żądanie OptimizeTours Interfejs Optimization API otrzymuje odpowiedź synchronicznie.

curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
--data @- << EOM
{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.73881799999999,
              "longitude": -122.4161
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.79581,
              "longitude": -122.4218856
            }
          }
        ]
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.73881799999999,
          "longitude": -122.4161
        },
        "endLocation": {
          "latitude": 37.73881799999999,
          "longitude": -122.4161
        },
        "costPerKilometer": 1.0
      }
    ],
    "globalStartTime": "2024-02-13T00:00:00.000Z",
    "globalEndTime": "2024-02-14T06:00:00.000Z"
  }
}
EOM

Po zakończeniu przetwarzania otrzymasz wiadomość z odpowiedzią.

Dalej: interpretowanie odpowiedzi