Rotanın geçtiği bir noktayı ayarlayın

Avrupa Ekonomik Alanı (AEA) geliştiricileri

API, varsayılan olarak ara yol noktalarını rota üzerindeki duraklar olarak değerlendirir. Ancak, ara yol noktasını, aracın durmadan geçeceği bir geçiş via yol noktası olarak yapılandırabilirsiniz.

Belirli bir rotayı şekillendirmek veya ayarlamak için geçiş noktalarını kullanın. Rota, ayrı teslim alma veya teslim etme duraklarına bölünmek yerine, geçiş amaçlı bir yol noktası, yönlendirme motorunu hedefe giderken belirli bir konumdan geçmeye zorlar. Örneğin, tercih edilen bir yol segmentini takip etmek veya bilinen bir tehlikeden kaçınmak için.

Başlangıç noktası, bir veya daha fazla geçiş ara noktası ve varış noktası içeren bir rota, başlangıç noktasını doğrudan varış noktasına bağlayan tek bir rota ayağı içerir.

Ara noktayı geçiş noktası olarak yapılandırmak için REST Waypoint kaynağında veya gRPC Waypoint mesajında noktanın via özelliğini true olarak ayarlayın.

Routes API, adresleri, yer kimliklerini ve enlem/boylam koordinatlarını kabul etse de enlem ve boylam ya da latLng koordinatları, geçiş yapılan ara noktalar içinen doğru rota ayarlamalarını sağlar.

via özelliği, bir haritada ara noktaları sürükleyerek rota oluşturduğunuzda en etkili şekilde çalışır. Bu yaklaşım, son rotanın nasıl göründüğünü gerçek zamanlı olarak görmenizi sağlar ve yol noktalarını erişilebilir konumlara yerleştirmenize yardımcı olur.

Örnek: Geçiş noktası ayarlama

Aşağıdaki örnekte, tam bir computeRoutes POST isteğinde ara "via": true noktasının nasıl ayarlanacağı gösterilmektedir:

curl -X POST -d '{
  "origin":{
    "location":{
      "latLng":{
        "latitude": 37.419734,
        "longitude": -122.0827784
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude": 37.417670,
        "longitude": -122.079595
      }
    }
  },
  "intermediates": [
    {
      "location":{
        "latLng":{
          "latitude": 37.419734,
          "longitude": -122.0807784
        }
      },
      "via": true
    }
  ],
  "travelMode": "DRIVE"
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

Geçiş noktaları için adresleri veya yer kimliklerini kullanma

Geçiş yönlendirmesi için enlem ve boylam koordinatlarını kullanmanızı öneririz. Bununla birlikte, adres dizesi veya yer kimliği kullanarak ara geçiş noktaları da belirtebilirsiniz.

Geçiş noktası için bir adres veya yer kodu kullandığınızda API, konumu enterpolasyon yaparak en yakın gezilebilir yola sabitler. Bu yol tutma işlemi bazen tam koordinatlara kıyasla rota farklılıklarına veya yanlışlıklara neden olabilir.

Adres dizesi veya Artı Kodu kullanarak bir ara nokta belirtirseniz API, konumu coğrafi olarak kodlar ve yanıttaki geocodingResults.intermediates dizisinde eşleşen yer kimliğini döndürür.

intermediates dizisindeki her öğe için, istekteki hangi ara yol noktasının yanıttaki yer kimliğine karşılık geldiğini belirlemek üzere intermediateWaypointRequestIndex özelliğini kullanın.

Örnek: Geçiş noktaları için yer kimlikleri isteğinde bulunma

Aşağıdaki örnekte, her biri "via": true değerini belirten üç geçişli ara yol noktası içeren bir istek gösterilmektedir:

curl -X POST -d '{
  "origin":{
    "address": "1600 Amphitheatre Parkway, Mountain View, CA"
  },
  "destination":{
    "address": "24 Willie Mays Plaza, San Francisco, CA 94107"
  },
  "intermediates": [
    {
      "address": "450 Serra Mall, Stanford, CA 94305, USA",
      "via": true
    },
    {
      "location":{
        "latLng":{
          "latitude": 37.419734,
          "longitude": -122.0807784
        }
      },
      "via": true
    },
    {
      "address": "1836 El Camino Real, Redwood City, CA 94063",
      "via": true
    }
  ],
  "travelMode": "DRIVE"
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs,geocodingResults' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

Yanıtta, başlangıç noktası, varış noktası ve istek dizini 0 ile dizin 2'de adresle belirttiğiniz iki ara nokta için yer kimliklerini içeren geocodingResults dizisi yer alır. API, dizin 1'deki ara geocodingResults yol noktasını atlar. Bunun nedeni, bu yol noktasını enlem ve boylam koordinatlarını kullanarak belirtmiş olmanızdır:

{
  "routes": [
    {
      "distanceMeters": 54200,
      "duration": "2400s",
      "legs": [
        {
          "distanceMeters": 54200,
          "duration": "2400s",
          "startLocation": {
            "latLng": {
              "latitude": 37.4220,
              "longitude": -122.0841
            }
          },
          "endLocation": {
            "latLng": {
              "latitude": 37.7786,
              "longitude": -122.3893
            }
          }
        }
      ]
    }
  ],
  "geocodingResults": {
    "origin": {
      "geocoderStatus": {},
      "type": [
        "premise"
      ],
      "placeId": "ChIJj38IfwK6j4ARNcyPDnEGa9g"
    },
    "destination": {
      "geocoderStatus": {},
      "type": [
        "premise"
      ],
      "placeId": "ChIJI7ES6tl_j4ARVpDZoXbWAiY"
    },
    "intermediates": [
      {
        "geocoderStatus": {},
        "intermediateWaypointRequestIndex": 0,
        "type": [
          "street_address"
        ],
        "placeId": "ChIJvdLMGyq7j4ARScE5tWX_C0Y"
      },
      {
        "geocoderStatus": {},
        "intermediateWaypointRequestIndex": 2,
        "type": [
          "premise"
        ],
        "placeId": "ChIJkTc0GKajj4AR9UMsOSHwGD0"
      }
    ]
  }
}