একটি রুট উদাহরণ গণনা

নিম্নলিখিত রিসোর্সে একটি HTTP POST অনুরোধ পাঠিয়ে আপনি Routes Preferred API থেকে রাউটের একটি সেট পুনরুদ্ধার করতে পারেন:

https://routespreferred.googleapis.com/v1:computeRoutes

আপনার অনুরোধের বিকল্পগুলি JSON ফরম্যাটে মেসেজ বডিতে অন্তর্ভুক্ত করুন। বিকল্পগুলির সম্পূর্ণ সেট সম্পর্কে তথ্যের জন্য, computeRoutes Request Body দেখুন।

অনুরোধের বডির উদাহরণ

নিম্নলিখিত JSON কোডটিতে দেখানো হয়েছে কিভাবে একটি computeRoutes অনুরোধের জন্য একটি সাধারণ অনুরোধ বডি তৈরি করতে হয়।

POST /v1:computeRoutes
Host: routespreferred.googleapis.com
Content-Type: application/json
X-Goog-Api-Key: YOUR_API_KEY
X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline

{
  "origin":{
    "location":{
      "latLng":{
        "latitude": 37.419734,
        "longitude": -122.0827784
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude": 37.417670,
        "longitude": -122.079595
      }
    }
  },
  "travelMode": "DRIVE",
  "routingPreference": "TRAFFIC_AWARE",
  "polylineQuality": "OVERVIEW",
  "departureTime": "2019-10-15T15:01:23.045123456Z",
  "computeAlternativeRoutes": false,
  "routeModifiers": {
    "avoidTolls": false,
    "avoidHighways": false,
    "avoidFerries": false
  },
  "languageCode": "en-US",
  "units": "IMPERIAL"
}

উদাহরণ প্রতিক্রিয়া বডি

নিম্নলিখিত JSON কোডটি হলো computeRoutes এর উপরোক্ত কল থেকে ফেরত আসা রেসপন্স বডির একটি উদাহরণ।

{
  "routes": [
    {
      "distanceMeters": 772,
      "duration": "165s",
      "polyline": {
        "encodedPolyline": "ipkcFfichVnP@j@BLoFVwM{E?"
      }
    }
  ]
}

gRPC অনুরোধের উদাহরণ

নিচে একটি gRPC অনুরোধের উদাহরণ দেখানো হলো।

যান

package main

import (
	"context"
	"fmt"
	"log"
	"time"

	routespreferred "developers.google.com/maps/go/routespreferred/v1"
	"google.golang.org/api/option"
	routespb "google.golang.org/genproto/googleapis/maps/routes/v1"
	"google.golang.org/genproto/googleapis/type/latlng"
	"google.golang.org/grpc/metadata"
)

const (
	// https://cloud.google.com/iam/docs/creating-managing-service-account-keys#creating_service_account_keys
	credentialsFile = "service-account.json"
	// Note that setting the field mask to * is OK for testing, but discouraged in
	// production.
	// For example, for ComputeRoutes, set the field mask to
	// "routes.distanceMeters,routes.duration,routes.polyline.encodedPolyline"
	// in order to get the route distances, durations, and encoded polylines.
	fieldMask = "*"
)

func main() {
	ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
	defer cancel()

	// instantiate a client
	c, err := routespreferred.NewRoutesPreferredClient(ctx,
		option.WithCredentialsFile(credentialsFile))
	defer c.Close()

	if err != nil {
		log.Fatal(err)
	}

	// create the origin using a latitude and longitude
	origin := &routespb.Waypoint{
		LocationType: &routespb.Waypoint_Location{
			Location: &routespb.Location{
				LatLng: &latlng.LatLng{
					Latitude:  37.417670,
					Longitude: -122.0827784,
				},
			},
		},
	}

	// create the destination using a latitude and longitude
	destination := &routespb.Waypoint{
		LocationType: &routespb.Waypoint_Location{
			Location: &routespb.Location{
				LatLng: &latlng.LatLng{
					Latitude:  37.417670,
					Longitude: -122.079595,
				},
			},
		},
	}

	// create the request with additional options
	req := &routespb.ComputeRoutesRequest{
		Origin:                   origin,
		Destination:              destination,
		TravelMode:               routespb.RouteTravelMode_DRIVE,
		RoutingPreference:        routespb.RoutingPreference_TRAFFIC_AWARE,
		ComputeAlternativeRoutes: true,
		Units:                    routespb.Units_METRIC,
		LanguageCode:             "en-us",
		RouteModifiers: &routespb.RouteModifiers{
			AvoidTolls:    false,
			AvoidHighways: true,
			AvoidFerries:  true,
		},
		PolylineQuality: routespb.PolylineQuality_OVERVIEW,
	}

	// set the field mask
	ctx = metadata.AppendToOutgoingContext(ctx, "X-Goog-Fieldmask", fieldMask)

	// execute rpc
	resp, err := c.ComputeRoutes(ctx, req)

	if err != nil {
		// "rpc error: code = InvalidArgument desc = Request contains an invalid
		// argument" may indicate that your project lacks access to Routes Preferred
		log.Fatal(err)
	}

	fmt.Printf("Duration of route %d", resp.Routes[0].Duration.Seconds)
}

টোল ফি গণনার উদাহরণ

নিম্নলিখিত উদাহরণটি টোল পাস ব্যবহার করা হলে আনুমানিক মূল্যসহ টোলের তথ্য ফেরত দিতে computeRoutes পদ্ধতিটি ব্যবহার করে।

অনুরোধে routes.travelAdvisory.tollInfo ফিল্ড মাস্ক নির্দিষ্ট করার মাধ্যমে এই ফিচারটি সক্রিয় করা হয়। টোল পাসটি route_modifiers ফিল্ডে নির্দিষ্ট করা থাকে। প্রদর্শিত টোলের মূল্য নির্দিষ্ট পাসের ব্যবহৃত মূল্যমানের উপর ভিত্তি করে নির্ধারিত হয়। যদি একাধিক পাস নির্দিষ্ট করা থাকে, তবে সবচেয়ে কম খরচের মূল্যটি প্রদর্শিত হয়।

অনুরোধ:

curl -X POST -d '{
  "origin":{
    "location":{
      "lat_lng":{
        "latitude":47.7020056,
        "longitude":-122.3479236
      }
    }
  },
  "destination":{
    "location":{
      "lat_lng":{
        "latitude":47.6192234,
        "longitude": -122.1676792
      }
    }
  },
  "travel_mode":"DRIVE",
  "route_modifiers":{
    "vehicle_info":{
      "emission_type": "GASOLINE"
    },
    "toll_passes": [
      "US_MA_EZPASSMA",
      "US_WA_GOOD_TO_GO"
    ]
  }
}' \
-H 'Content-Type: application/json' \
-H 'X-Goog-Api-Key: <YOUR_API_KEY>' \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.travelAdvisory.tollInfo,routes.legs.travelAdvisory.tollInfo' \
'https://routespreferred.googleapis.com/v1alpha:computeRoutes'

প্রতিক্রিয়া:

{
  "routes": [
    {
      "legs": [
        {
          "travelAdvisory": {
            "tollInfo": {
              "estimatedPrice": [
                {
                  "currencyCode": "USD",
                  "units": "3",
                  "nanos": 400000000
                }
              ]
            }
          }
        }
      ],
      "distanceMeters": 22496,
      "duration": "1400s",
      "travelAdvisory": {
        "tollInfo": {
          "estimatedPrice": [
            {
              "currencyCode": "USD",
              "units": "3",
              "nanos": 400000000
            }
          ]
        }
      }
    }
  ]
}