Rota hesaplamak için en azından rotanın başlangıç ve hedef konumlarını belirtmeniz gerekir. Bu konumları rotadaki ara noktalar olarak tanımlarsınız.
Başlangıç ve varış noktasına ek olarak, farklı türde ara noktalar ve bir rota için ara noktaların nasıl işleneceğini belirtebilirsiniz. Daha fazla bilgi ve örnek için şu konulara bakın:
- Aracın yönünü ve yolun tarafını belirtme
- Ara noktaları belirtme
- Rota üzerinde durak ayarlama
- Rotanın geçeceği bir nokta belirleme
- Rotanızdaki durakların sırasını optimize etme
Rota için konumları belirtme
Bir konumu, Waypoint (REST) veya Waypoint (gRPC) nesnesi oluşturarak temsil edersiniz. Ara nokta tanımında, bir konumu aşağıdaki yöntemlerden herhangi biriyle belirtebilirsiniz:
- Yer kimliği (tercih edilen)
- Enlem/boylam koordinatları
- Adres dizesi ("Chicago, IL" veya "Darwin, NT, Avustralya")
- Gezinme noktası jetonu
- Plus Code
Bir istekteki tüm ara noktaların konumlarını aynı şekilde belirtebilir veya farklı yöntemleri bir arada kullanabilirsiniz. Örneğin, başlangıç ara noktası için enlem/boylam koordinatlarını, hedef ara noktası için ise yer kimliğini kullanabilirsiniz.
Verimlilik ve doğruluk için enlem/boylam koordinatları veya adres dizeleri yerine yer kimliklerini kullanın. Yer kimlikleri benzersiz şekilde açıktır ve erişim noktaları ile trafik değişkenleri gibi rota belirleme için coğrafi kodlama avantajları sağlar. Konum belirtmenin diğer yollarından kaynaklanabilecek aşağıdaki durumların önlenmesine yardımcı olurlar:
- Enlem/boylam koordinatlarının kullanılması, konumun bu koordinatlara en yakın yola sabitlenmesine neden olabilir. Bu yol, tesise erişim noktası olmayabilir, hatta hedefe hızlı veya güvenli bir şekilde ulaşan bir yol bile olmayabilir.
- Adres dizelerinin, rota hesaplanmadan önce enlem/boylam koordinatlarına dönüştürülmesi için Routes API tarafından coğrafi kodlanması gerekir. Bu dönüşüm performansı etkileyebilir.
Konumu yer kimliği olarak belirtme
Bir ara noktanın konumunu belirtmek için yer kimliği kullanabilirsiniz. Enlem ve boylam koordinatları yollara sabitlendiğinden, bazı durumlarda yer kimliğinin daha iyi sonuçlar verdiğini görebilirsiniz.
Geocoding API ve Places API'den (Yeni) (Autocomplete (Yeni) dahil) yer kimliklerini alma Yer kimlikleri hakkında daha fazla bilgi için Yer kimliğine genel bakış başlıklı makaleyi inceleyin.
Aşağıdaki örnekte, hem origin hem de destination için bir yer kimliği iletmek üzere placeId özelliği kullanılmıştır:
{ "origin":{ "placeId": "ChIJayOTViHY5okRRoq2kGnGg8o" }, "destination":{ "placeId": "ChIJTYKK2G3X5okRgP7BZvPQ2FU" }, ... }
Konumu enlem ve boylam koordinatları olarak belirtme
Bir ara noktada konum tanımlamak için enlem/boylam koordinatlarını kullanarak Location (REST) veya Location (gRPC) değerini belirtin.
Örneğin, latitude ve longitude koordinatlarını kullanarak origin ve destination rotası için bir ara nokta belirtin:
{ "origin":{ "location":{ "latLng":{ "latitude": 37.419734, "longitude": -122.0827784 } } }, "destination":{ "location":{ "latLng":{ "latitude": 37.417670, "longitude": -122.079595 } } }, ... }
Konumu adres dizesi olarak belirtme
Adres dizeleri, bir dizeyle temsil edilen gerçek adreslerdir (ör. "1600 Amphitheatre Parkway, Mountain View, CA"). Coğrafi kodlama, bir adres dizesini enlem ve boylam koordinatlarına (ör. enlem 37,423021 ve boylam -122,083739) dönüştürme işlemidir.
Bir ara noktanın konumu olarak adres dizesi ilettiğinizde Routes API, dizeyi enlem ve boylam koordinatlarına dönüştürmek için dahili olarak coğrafi kodlama yapar.
Örneğin, bir rotayı hesaplamak için adres dizelerini kullanarak rota origin ve destination için bir ara nokta belirtirsiniz:
{ "origin":{ "address": "1600 Amphitheatre Parkway, Mountain View, CA" }, "destination":{ "address": "450 Serra Mall, Stanford, CA 94305, USA" }, ... }
Bu örnekte, Routes API her iki adresi de coğrafi olarak kodlayarak enlem ve boylam koordinatlarına dönüştürür.
Adres değeri belirsizse Routes API, benzer adresler arasında anlam belirsizliğini gidermek için bir arama çağırabilir. Örneğin, "1. Cadde" tam bir değer veya "1. Cadde KB" ya da "1. Cadde GD" için kısmi bir değer olabilir. Bu sonuç, Geocoding API tarafından döndürülen sonuçtan farklı olabilir. Yer kimliklerini kullanarak olası yanlış yorumlamaları önleyebilirsiniz.
Adresin bölgesini ayarlama
Bir ara noktanın konumu olarak eksik bir adres dizesi iletirseniz API, yanlış coğrafi kodlanmış enlem/boylam koordinatlarını kullanabilir. Örneğin, başlangıç noktası olarak "Toledo" ve varış noktası olarak "Madrid"i belirterek bir sürüş rotası için istekte bulunursunuz:
{ "origin":{ "address": "Toledo" }, "destination":{ "address": "Madrid" }, "travelMode": "DRIVE" }
Bu örnekte "Toledo", İspanya'da değil, ABD'nin Ohio eyaletinde bir şehir olarak yorumlanır. Bu nedenle istek, boş bir dizi döndürür. Bu da rota olmadığı anlamına gelir:
{ [] }
regionCode parametresini ekleyerek API'yi belirli bir bölgeye yönelik sonuca ağırlık verme döndürecek şekilde yapılandırabilirsiniz. Bu parametre, bölge kodunu iki karakterli bir ccTLD ("üst düzey alan") değeri olarak belirtir. Çoğu ccTLD kodu, bazı istisnalar dışında ISO 3166-1 kodlarıyla aynıdır. Örneğin, Birleşik Krallık'ın ccTLD'si "uk" (.co.uk) iken ISO 3166-1 kodu "gb"dir (teknik olarak "Büyük Britanya ve Kuzey İrlanda Birleşik Krallığı" tüzel kişiliği için).
"Toledo"dan "Madrid"e yol tarifi isteği regionCode parametresini içeriyorsa "Toledo", İspanya'da bir şehir olarak yorumlandığı için uygun sonuçlar döndürülür:
{ "origin":{ "address": "Toledo" }, "destination":{ "address": "Madrid" }, "travelMode": "DRIVE", "regionCode": "es" }
Yanıt artık Toledo, İspanya'dan Madrid, İspanya'ya hesaplanan rotayı içerir:
{ "routes": [ { "distanceMeters": 75330, "duration": "4137s", ... } ] }
Bir konumu gezinme noktası jetonu olarak belirtme
Navigasyon noktası jetonu, bir konumu ve ek rota bağlamını kodlayan bir dizedir. Navigasyon noktası jetonları; girişlerin, yükleme alanlarının veya belirlenmiş teslim alma alanlarının yakınındaki belirli erişim noktalarına giden kesin rotalar sağlayabilir. Bu özellik, teslim alma veya bırakma noktasının belirsiz olabileceği yemek teslimatı ya da araç paylaşımı gibi durumlarda kullanışlıdır.
Geocoding API'nin Destinations yöntemini çağırarak navigasyon noktası jetonu alabilirsiniz.
Navigasyon noktası jetonu belirtmek için:
- Geocoding API'nin
SearchDestinationsyönteminden birnavigationPointTokenalın. Daha fazla bilgi için Geocoding API belgelerine bakın. navigationPointTokendeğerini ileterek bir ara nokta oluşturun.
Aşağıdaki örnekte, hem origin hem de destination için bir gezinme noktası jetonu iletmek üzere navigation_point_token özelliği kullanılmaktadır:
{ "origin":{ "navigation_point_token": "ENCODED_NAVIGATION_POINT_TOKEN_FOR_ORIGIN" }, "destination":{ "navigation_point_token": "ENCODED_NAVIGATION_POINT_TOKEN_FOR_DESTINATION" }, ... }
Bir konumu Plus Code olarak belirtme
Birçok kişinin tam bir adresi yoktur. Bu durum, teslimat almalarını zorlaştırabilir. Adresi olan kişiler de teslimatları arka giriş veya yükleme alanı gibi daha belirli konumlarda teslim almayı tercih edebilir.
Plus Code'lar, gerçek bir adresi olmayan kişiler veya yerler için açık adresler gibidir. Plus Code'lar, sokak adları ve numaraları içeren adresler yerine enlem/boylam koordinatlarını temel alır ve sayı ile harf olarak gösterilir.
Google, adreslerin avantajlarından herkesin ve her şeyin yararlanabilmesi için Plus Code'ları geliştirdi. Plus Code, enlem/boylam koordinatlarından türetilen ve bir alanı temsil eden kodlanmış bir konum referansıdır: Bir derecenin 1/8.000'i x bir derecenin 1/8.000'i (ekvatorda yaklaşık 14 m x 14 m) veya daha küçük. Plus Code'ları, açık adreslerin bulunmadığı veya binaların numaralandırılmadığı ya da sokakların adlandırılmadığı yerlerde açık adreslerin yerine kullanabilirsiniz.
Plus Code'lar, global kod veya bileşik kod olarak biçimlendirilmelidir:
- Global kod, 4 karakterlik bir alan kodu ve 6 karakter veya daha uzun bir yerel koddan oluşur.
Örneğin, "1600 Amphitheatre Parkway, Mountain View, CA" adresi için global kod "849V" ve yerel kod "CWC8+R9"dur. Ardından, konum değerini "849VCWC8+R9" olarak belirtmek için 10 karakterlik Plus Code'un tamamını kullanırsınız.
- Bileşik kod, 6 karakter veya daha uzun bir yerel kod ile açık bir konumun birleşiminden oluşur.
Örneğin, "450 Serra Mall, Stanford, CA 94305, ABD" adresinin yerel kodu "CRHJ+C3"tür. Bileşik adres için yerel kodu adresin şehir, eyalet, posta kodu ve ülke kısmıyla "CRHJ+C3 Stanford, CA 94305, ABD" biçiminde birleştirin.
Örneğin, rota için bir ara nokta belirterek rotayı hesaplayın
originvedestinationPlus Code'ları kullanarak:{ "origin":{ "address": "849VCWC8+R9" }, "destination":{ "address": "CRHJ+C3 Stanford, CA 94305, USA" }, "travelMode": "DRIVE" }
Plus Code'lar, Otomatik Tamamlama (Yeni), Yer Ayrıntıları (Yeni) ve Geocoding API gibi Google Haritalar Platformu API'lerinde desteklenir. Örneğin, enlem/boylam koordinatlarıyla belirtilen bir konumun Plus Code'unu belirlemek için Geocoding API'yi kullanarak konumu tersine coğrafi kodlayabilirsiniz.