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 bırakma duraklarına bölünmek yerine, geçiş amaçlı bir ara nokta, 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çin en 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ş yapılacak bir ara nokta 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.

Bir geçiş ara noktası için adres veya Yer Kimliği kullandığınızda API, konumu en yakın gezilebilir yola göre enterpolasyon yapar ve 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, yanıttaki Yer Kimliğine istekteki hangi ara noktanın 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"
      }
    ]
  }
}