Rota matrisini hesaplamak için en az bir rota kaynağının ve bir rota hedefinin konumlarını belirtmeniz gerekir.
Rotanın konumlarını belirtme
Bir ara nokta (REST) veya ara nokta (gRPC) nesnesi oluşturarak bir konumu temsil edersiniz. Yol noktası 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")
- Plus Kodu
Bir istekteki tüm yol işaretlerinin konumlarını aynı şekilde belirtebilir veya bunları karıştırabilirsiniz. Örneğin, başlangıç yol noktası için enlem/boylam koordinatlarını, hedef yol noktası için ise bir yer kimliği kullanabilirsiniz.
Verimli ve doğru sonuçlar için enlem/boylam koordinatları veya adres dizeleri yerine yer kimliklerini kullanın. Yer kimlikleri benzersiz bir şekilde açıktır ve yönlendirme için erişim noktaları ve trafik değişkenleri gibi coğrafi kodlama avantajları sağlar. Bu yöntemler, bir konumu belirtmenin diğer yollarından kaynaklanabilecek aşağıdaki durumların önüne geçmenize yardımcı olur:
- Enlem/boylam koordinatlarının kullanılması, konumun bu koordinatlara en yakın yola sabitlenmesine neden olabilir. Bu yol, tesise erişim noktası veya hedefe hızlı ve güvenli bir şekilde giden bir yol olmayabilir.
- Rota hesaplayabilmek için adres dizelerinin önce Routes API tarafından coğrafi kodlanarak enlem/boylam koordinatlarına dönüştürülmesi gerekir. Bu dönüşüm, performansı etkileyebilir.
Bir konumu yer kimliği olarak belirtme
Bir yol noktasının konumunu belirtmek için yer kimliği kullanabilirsiniz. Enlem ve boylam koordinatları yollara bağlandığından, bazı durumlarda yer kimliğinin daha iyi sonuçlar sunduğunu görebilirsiniz.
Geocoding API ve Places API'den (yer otomatik tamamlama dahil) yer kimlikleri alın. 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ılmaktadır:
{ "origin":{ "placeId": "ChIJayOTViHY5okRRoq2kGnGg8o" }, "destination":{ "placeId": "ChIJTYKK2G3X5okRgP7BZvPQ2FU" }, ... }
Bir konumu enlem ve boylam koordinatları olarak belirtme
Bir yol noktasında konumu tanımlamak için enlem/boylam koordinatlarını kullanarak Konum (REST) veya Konum(gRPC) özelliğini belirtin.
Örneğin, latitude
ve longitude
koordinatlarını kullanarak origin
ve destination
rotası için bir yol noktası belirtin:
{ "origin":{ "location":{ "latLng":{ "latitude": 37.419734, "longitude": -122.0827784 } } }, "destination":{ "location":{ "latLng":{ "latitude": 37.417670, "longitude": -122.079595 } } }, ... }
Bir konumu adres dizesi olarak belirtme
Adres dizeleri, bir dizeyle temsil edilen gerçek adreslerdir ("1600 Amphitheatre Parkway, Mountain View, CA" gibi). Coğrafi kodlama, bir adres dizesini enlem ve boylam koordinatlarına dönüştürme işlemidir (ör. enlem 37,423021 ve boylam -122,083739).
Bir yol noktasının konumu olarak bir adres dizesi gönderdiğinizde Routes API, dizenin enlem ve boylam koordinatlarına dönüştürülmesi için dize üzerinde dahili olarak coğrafi kodlama yapar.
Örneğin, bir rotayı hesaplamak için adres dizeleri kullanarak rota için origin
ve destination
bir yol noktası 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 enlem ve boylam koordinatlarına dönüştürmek için coğrafi kodlar.
Adres değeri belirsizse Routes API, benzer adreslerden ayırt etmek için bir aramayı tetikleyebilir. Örneğin, "1. Cadde", "1. Cadde (Kuzeydoğu)" veya "1. Cadde (Güneydoğu)" için tam veya kısmi bir değer olabilir. Bu sonuç, Coğrafi Kodlama API'si tarafından döndürülen sonuçtan farklı olabilir. Yer kimliklerini kullanarak olası yanlış yorumlardan kaçınabilirsiniz.
Adresin bölgesini ayarlama
Bir yol noktasının konumu olarak eksik bir adres dizesi gönderirseniz API, yanlış coğrafi kodlanmış enlem/boylam koordinatlarını kullanabilir. Örneğin, bir sürüş rotası için kalkış noktası olarak "Toledo"yu ve varış noktası olarak "Madrid"i belirterek bir istek gönderirseniz:
{ "origin":{ "address": "Toledo" }, "destination":{ "address": "Madrid" }, "travelMode": "DRIVE" }
Bu örnekte "Toledo", İspanya'daki değil, ABD'nin Ohio eyaletinde bulunan bir şehir olarak yorumlanır. Bu nedenle istek boş bir dizi döndürür. Yani hiçbir rota yoktur:
{ [] }
regionCode
parametresini ekleyerek API'yi belirli bir bölgeye yönelik sonuçlar döndürecek şekilde yapılandırabilirsiniz. Bu parametre, bölge kodunu ccTLD ("üst düzey alan") iki karakterli bir değer olarak belirtir. ccTLD kodlarının çoğu, bazı önemli istisnalar dışında ISO 3166-1 kodlarıyla aynıdır. Örneğin, Birleşik Krallık'ın ccTLD'si "uk" iken (.co.uk) 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 giden yol tarifi isteği için regionCode
parametresi dahil edildiğinde, "Toledo" İspanya'daki 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 İspanya'nın Toledo kentinden İspanya'nın Madrid kentine hesaplanan rotayı içeriyor:
{ "routes": [ { "distanceMeters": 75330, "duration": "4137s", ... } ] }
Bir konumu Plus Code olarak belirtme
Birçok kullanıcının tam adresi olmadığından teslimat almaları zor olabilir. Adresi olan kullanıcılar, teslimatları arka giriş veya yükleme rampası gibi daha belirli konumlarda kabul etmeyi tercih edebilir.
Artı Kodları, gerçek adresi olmayan kişiler veya yerler için açık adres gibidir. Artı Kodları, açık adreslerin aksine enlem/boylam koordinatlarını temel alır ve sayılar ile harfler şeklinde gösterilir.
Google, adreslerin avantajlarını herkese ve her şeye sunmak için Plus Code'ları geliştirdi. Artı kodu, enlem/boylam koordinatlarından türetilen ve 1 derecenin 8.000'de 1'i ile 1 derecenin 8.000'de 1'i (ekvatorda yaklaşık 14 m x 14 m) veya daha küçük bir alanı temsil eden kodlanmış bir konum referansı. 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 genel kod veya bileşik kod olarak biçimlendirilmelidir:
- Küresel kod, 4 karakterli bir alan kodundan ve 6 karakter veya daha uzun bir yerel koddan oluşur.
Örneğin, "1600 Amphitheatre Parkway, Mountain View, CA" adresi için genel kod "849V", yerel kod ise "CWC8+R9" olur. Ardından, konum değerini "849VCWC8+R9" olarak belirtmek için 10 karakterlik Artı Kodunun tamamını kullanırsınız.
- Karma kod, açık bir konumla birlikte 6 karakter veya daha uzun bir yerel koddan oluşur.
Örneğin, "450 Serra Mall, Stanford, CA 94305, ABD" adresinin yerel kodu "CRHJ+C3" şeklindedir. Bir birleşik adres için yerel kodu, adresin şehir, eyalet, posta kodu ve ülke bölümleriyle birlikte "CRHJ+C3 Stanford, CA 94305, ABD" şeklinde birleştirin.
Örneğin, Artı Kodları kullanarak
origin
vedestination
rotaları için bir yol noktası belirterek rota hesaplayın:{ "origin":{ "address": "849VCWC8+R9" }, "destination":{ "address": "CRHJ+C3 Stanford, CA 94305, USA" }, "travelMode": "DRIVE" }
Plus Kodları, Yer Otomatik Tamamlama, Yer Ayrıntıları, Yol Tarifleri API'si ve Coğrafi Kodlama API'si dahil olmak üzere Google Haritalar Platformu API'lerinde desteklenir. Örneğin, konumun Plus Code'unu belirlemek için enlem/boylam koordinatlarıyla belirtilen bir konumun ters coğrafi kodlamasını yapmak üzere Geocoding API'yi kullanabilirsiniz.