Genel bakış
DirectionsService
nesnesini kullanarak çeşitli ulaşım yöntemlerini kullanarak yol tariflerini hesaplayabilirsiniz. Bu nesne, yol tarifi isteklerini alan ve verimli bir yol döndüren Google Haritalar API'si Yol Tarifi Hizmeti ile iletişim kurar.
Optimize edilen birincil faktör seyahat süresidir ancak mesafe, dönüş sayısı ve daha birçok faktör de dikkate alınabilir.
Bu yol tarifi sonuçlarını kendiniz işleyebilir veya sonuçları oluşturmak için DirectionsRenderer
nesnesini kullanabilirsiniz.
Bir yol tarifi isteğinde başlangıç noktası veya hedefi belirtirken bir sorgu dizesi (örneğin, "Chicago, IL" veya "Darwin, NSW, Australia"), LatLng
değeri ya da Place nesnesi belirtebilirsiniz.
Yol Tarifleri hizmeti bir dizi ara nokta kullanarak çok parçalı yol tariflerini döndürebilir. Yol tarifleri, rotayı harita üzerinde çizen bir çoklu çizgi veya ek olarak bir <div>
öğesi içinde bir dizi metinsel açıklama (örneğin, " Williamsburg Köprüsü rampasına doğru sağa dönün") olarak görüntülenir.
Kullanmaya başlama
Maps JavaScript API'de Directions hizmetini kullanmadan önce ilk olarak, Maps JavaScript API için ayarladığınız projede, Google Cloud Console'da Directions API'nin etkinleştirildiğinden emin olun.
Etkin API'ler listenizi görüntülemek için:
- Google Cloud Console'a gidin.
- Proje seç düğmesini tıklayın, ardından Maps JavaScript API için ayarladığınız projeyi seçin ve Aç'ı tıklayın.
- Gösterge Tablosu'ndaki API listesinde Directions API'yi bulun.
- API'yi listede görüyorsanız her şey yolunda demektir. API listede yoksa etkinleştirin:
- Kitaplık sekmesini görüntülemek için sayfanın üst kısmında API'yi ETKİNLEŞTİR'i seçin. Alternatif olarak, sol taraftaki menüden Kitaplık'ı seçin.
- Directions API'yi arayın ve sonuçlar listesinden seçin.
- ETKİNLEŞTİR'i seçin. İşlem tamamlandığında, Kontrol Paneli'ndeki API listesinde Directions API görünür.
Fiyatlandırma ve politikalar
Fiyatlandırma
16 Temmuz 2018'den itibaren geçerli olmak üzere Haritalar, Rotalar ve Yerler için yeni bir kullandıkça öde fiyatlandırma planı yürürlüğe girdi. JavaScript Directions hizmetini kullanımınızla ilgili yeni fiyatlandırma ve kullanım sınırları hakkında daha fazla bilgi edinmek için Directions API'nin Kullanım ve Faturalandırma bölümüne bakın.
Politikalar
Yol Tarifi hizmetinin kullanımı, Directions API için açıklanan politikalara uygun olmalıdır.
Yol Tarifi İstekleri
Google Haritalar API'sinin harici bir sunucuya çağrı yapması gerektiğinden Yol Tarifi hizmetine erişim eşzamansız olarak gerçekleştirilir. Bu nedenle, isteğin tamamlanmasının ardından yürütülecek bir callback yöntemi iletmeniz gerekir. Bu geri çağırma yöntemi, sonuçları işlemelidir. Yol tarifi hizmetinin, ayrı bir routes[]
dizisi olarak birden fazla olası seyahat planı döndürebileceğini unutmayın.
Maps JavaScript API'de yol tariflerini kullanmak için DirectionsService
türünde bir nesne oluşturun ve Yol Tarifi hizmetine istek başlatmak amacıyla DirectionsService.route()
yöntemini çağırarak bu nesneye giriş terimlerini ve yanıt alındığında yürütülecek bir geri çağırma yöntemini içeren DirectionsRequest
nesne değişmez değerini iletin.
DirectionsRequest
nesne değişmez değeri aşağıdaki alanları içerir:
{ origin: LatLng | String | google.maps.Place, destination: LatLng | String | google.maps.Place, travelMode: TravelMode, transitOptions: TransitOptions, drivingOptions: DrivingOptions, unitSystem: UnitSystem, waypoints[]: DirectionsWaypoint, optimizeWaypoints: Boolean, provideRouteAlternatives: Boolean, avoidFerries: Boolean, avoidHighways: Boolean, avoidTolls: Boolean, region: String }
Bu alanlar aşağıda açıklanmıştır:
origin
(zorunlu), yol tarifinin hesaplanacağı başlangıç konumunu belirtir. Bu değer,String
(örneğin, "Chicago, IL"),LatLng
değeri veya Place nesnesi olarak belirtilebilir. Place nesnesi kullanıyorsanız yer kimliği, sorgu dizesi veyaLatLng
konumu belirtebilirsiniz. Yer kimliklerini Maps JavaScript API'deki Coğrafi Kodlama, Yer Arama ve Yer Otomatik Tamamlama hizmetlerinden alabilirsiniz. Otomatik Yer Doldurma'daki yer kimliklerinin kullanıldığı bir örnek için Otomatik Yer Tamamlama ve Yol Tarifleri bölümüne bakın.destination
(zorunlu), yol tarifinin hesaplanacağı bitiş konumunu belirtir. Seçenekler, yukarıda açıklananorigin
alanı ile aynıdır.travelMode
(zorunlu), yol tarifi hesaplanırken kullanılacak ulaşım modunu belirtir. Geçerli değerler aşağıdaki Seyahat Modları bölümünde belirtilmiştir.transitOptions
(isteğe bağlı), yalnızcatravelMode
değerininTRANSIT
olduğu istekler için geçerli olan değerleri belirtir. Geçerli değerler, aşağıdaki Toplu Taşıma Seçenekleri bölümünde açıklanmıştır.drivingOptions
(isteğe bağlı), yalnızcatravelMode
değerininDRIVING
olduğu istekler için geçerli olan değerleri belirtir. Geçerli değerler, aşağıdaki Sürüş Seçenekleri bölümünde açıklanmıştır.unitSystem
(isteğe bağlı), sonuçları görüntülerken hangi birim sisteminin kullanılacağını belirtir. Geçerli değerler aşağıdaki Birim Sistemleri bölümünde belirtilmiştir.waypoints[]
(isteğe bağlı),DirectionsWaypoint
dizisini belirtir. Referans noktaları, bir rotayı belirtilen konumlardan geçerek değiştirir. Bir referans noktası, aşağıda gösterilen alanlarla birlikte bir nesne değişmez değeri olarak belirtilir:location
, referans noktasının konumunuLatLng
, Yer nesnesi veya coğrafi kodlu olacak birString
olarak belirtir.stopover
, referans noktasının rotadaki bir durak olduğunu belirten bir boole değeridir. Bu boole, rotayı iki rotaya bölme etkisine sahiptir.
(Ara noktalarla ilgili daha fazla bilgi için aşağıdaki Rotalarda Referans Noktaları Kullanma konusuna bakın.)
optimizeWaypoints
(isteğe bağlı), sağlananwaypoints
bilgisinin kullanıldığı rotanın, ara noktaların daha verimli bir sırada yeniden düzenlenmesiyle optimize edilebileceğini belirtir.true
ise Yol Tarifi hizmeti, yeniden sıralananwaypoints
numarasınıwaypoint_order
alanına döndürür.(Daha fazla bilgi için aşağıdaki Rotalarda Referans Noktalarını Kullanma bölümüne bakın.)true
değerine ayarlandığındaprovideRouteAlternatives
(isteğe bağlı), Yol Tarifi hizmetinin yanıtta birden fazla rota alternatifi sağlayabileceğini belirtir. Rota alternatifleri sağlamanın sunucudan yanıt süresini artırabileceğini unutmayın. Bu, yalnızca ara ara noktası olmayan istekler için kullanılabilir.true
olarak ayarlandığındaavoidFerries
(isteğe bağlı), hesaplanan rotaların mümkünse feribotlardan kaçınması gerektiğini gösterir.true
olarak ayarlandığındaavoidHighways
(isteğe bağlı), hesaplanan rotaların mümkünse ana otoyollardan kaçınması gerektiğini gösterir.true
değerine ayarlandığındaavoidTolls
(isteğe bağlı), hesaplanan rotaların mümkünse paralı yollardan kaçınması gerektiğini gösterir.region
(isteğe bağlı), ccTLD ("üst düzey alan") iki karakterli değer olarak belirtilen bölge kodunu belirtir. (Daha fazla bilgi için aşağıdaki Bölgeye Ağırlık Verme bölümüne bakın.)
Aşağıda örnek bir DirectionsRequest
verilmiştir:
{ origin: 'Chicago, IL', destination: 'Los Angeles, CA', waypoints: [ { location: 'Joplin, MO', stopover: false },{ location: 'Oklahoma City, OK', stopover: true }], provideRouteAlternatives: false, travelMode: 'DRIVING', drivingOptions: { departureTime: new Date(/* now, or future date */), trafficModel: 'pessimistic' }, unitSystem: google.maps.UnitSystem.IMPERIAL }
Ulaşım Şekilleri
Yol tarifini hesaplarken kullanılacak ulaşım şeklini belirtmeniz gerekir. Şu anda aşağıdaki ulaşım şekilleri desteklenmektedir:
DRIVING
(Varsayılan), yol ağını kullanan standart arabayla yol tariflerini gösterir.BICYCLING
, bisiklet yolları ve tercih edilen sokaklardan bisiklet için yol tarifi ister.TRANSIT
, toplu taşıma rotalarını kullanarak yol tarifi istiyor.WALKING
, yaya yolları ve kaldırımlardan yaya yol tarifi istiyor.
Bir ülkenin yol tariflerini ne ölçüde desteklediğini belirlemek için Google Haritalar Platformu Kapsam Ayrıntıları'na bakın. İlgili yol tarifi türünün kullanılamadığı bir bölge için yol tarifi istediğinizde yanıt DirectionsStatus
="ZERO_RESULTS
" sonucunu döndürür.
Not: Yaya yol tarifi, anlaşılır yaya yollarını içermeyebilir. Bu nedenle, yaya yol tariflerinde DirectionsResult
uyarı görüntülenir. Bu uyarılar kullanıcıya her zaman gösterilmelidir. Varsayılan DirectionsRenderer
kullanmazsanız uyarıların gösterilmesini sağlamak sizin sorumluluğunuzdadır.
Toplu Taşıma Seçenekleri
Yol tarifi isteği için kullanılabilen seçenekler, ulaşım şekillerine göre değişiklik gösterir.
Toplu taşıma yol tarifi isterken avoidHighways
, avoidTolls
, waypoints[]
ve optimizeWaypoints
seçenekleri yoksayılır. TransitOptions
nesne değişmez değerini kullanarak geçişe özel yönlendirme seçeneklerini belirtebilirsiniz.
Toplu taşıma yol tarifleri zamana duyarlıdır. Yol tarifi yalnızca gelecekteki bir kez döndürülür.
TransitOptions
nesnesi değişmez değeri aşağıdaki alanları içerir:
{ arrivalTime: Date, departureTime: Date, modes[]: TransitMode, routingPreference: TransitRoutePreference }
Bu alanlar aşağıda açıklanmıştır:
arrivalTime
(isteğe bağlı),Date
nesnesi olarak istenen varış zamanını belirtir. Varış saati belirtilirse kalkış saati yoksayılır.departureTime
(isteğe bağlı),Date
nesnesi olarak istenen kalkış saatini belirtir.arrivalTime
belirtilirsedepartureTime
yok sayılır.departureTime
veyaarrivalTime
için herhangi bir değer belirtilmezse varsayılan olarak şimdi (yani geçerli saat) kullanılır.modes[]
(isteğe bağlı), bir veya daha fazlaTransitMode
nesne değişmez değeri içeren bir dizidir. Bu alan yalnızca istek bir API anahtarı içeriyorsa eklenebilir. HerTransitMode
, tercih edilen toplu taşıma modunu belirtir. Aşağıdaki değerlere izin verilir:BUS
, hesaplanan rotanın otobüsle seyahati tercih etmesi gerektiğini belirtir.RAIL
, hesaplanan rotanın tren, tramvay, hafif raylı sistem ve metro ile seyahat etmeyi tercih etmesi gerektiğini belirtir.SUBWAY
, hesaplanan rotanın metroyla seyahati tercih etmesi gerektiğini gösterir.TRAIN
, hesaplanan rotanın trenle seyahat etmeyi tercih etmesi gerektiğini belirtir.TRAM
, hesaplanan rotanın tramvay ve hafif raylı sistem ile seyahati tercih etmesi gerektiğini belirtir.
routingPreference
(isteğe bağlı), toplu taşıma rotalarıyla ilgili tercihleri belirtir. Bu seçeneği kullanarak, API tarafından seçilen varsayılan en iyi rotayı kabul etmek yerine döndürülen seçeneklere ağırlık verebilirsiniz. Bu alan, yalnızca istek bir API anahtarı içeriyorsa belirtilebilir. Aşağıdaki değerlere izin verilir:FEWER_TRANSFERS
, hesaplanan rotanın sınırlı sayıda aktarımı tercih etmesi gerektiğini belirtir.LESS_WALKING
, hesaplanan rotanın sınırlı sayıda yürüyüş tercih etmesi gerektiğini belirtir.
Toplu taşımayla DirectionsRequest
örneği aşağıda gösterilmektedir:
{ origin: 'Hoboken NJ', destination: 'Carroll Gardens, Brooklyn', travelMode: 'TRANSIT', transitOptions: { departureTime: new Date(1337675679473), modes: ['BUS'], routingPreference: 'FEWER_TRANSFERS' }, unitSystem: google.maps.UnitSystem.IMPERIAL }
Sürüş Seçenekleri
DrivingOptions
nesnesi aracılığıyla arabayla yol tarifleri için yönlendirme seçeneklerini belirtebilirsiniz.
DrivingOptions
nesnesi aşağıdaki alanları içerir:
{ departureTime: Date, trafficModel: TrafficModel }
Bu alanlar aşağıda açıklanmıştır:
departureTime
(drivingOptions
nesne değişmez değerinin geçerli olması için gereklidir),Date
nesnesi olarak istenen kalkış saatini belirtir. Değer, geçerli zamana veya gelecekteki bir zamana ayarlanmalıdır. Geçmiş bir tarih olamaz. (API, farklı saat dilimlerinde tutarlı işleme sağlamak için tüm tarihleri UTC'ye dönüştürür.) Google Haritalar Platformu Premium Plan müşterileri için isteğedepartureTime
özelliğini dahil ederseniz API, o andaki beklenen trafik koşullarında verilen en iyi rotayı döndürür ve yanıta trafikte tahmini süreyi (duration_in_traffic
) dahil eder. Kalkış saati belirtmezseniz (yani istektedrivingOptions
yoksa) döndürülen rota, trafik koşullarını dikkate almadan genellikle iyi bir rotadır.trafficModel
(isteğe bağlı), trafikteki süreyi hesaplarken kullanılacak varsayımları belirtir. Bu ayar, yanıttakiduration_in_traffic
alanında döndürülen değeri etkiler. Bu alan, geçmiş ortalamalara göre trafikteki tahmini süreyi içerir. Varsayılan olarakbestguess
değerine ayarlanır. Aşağıdaki değerlere izin verilir:bestguess
(varsayılan), döndürülenduration_in_traffic
değerinin hem geçmiş trafik koşulları hem de canlı trafik hakkında bilinenler göz önünde bulundurulduğunda en iyi seyahat süresi tahmini olması gerektiğini belirtir. Canlı trafik,departureTime
yılına ne kadar yakın olursa o kadar önemli hale gelir.pessimistic
, döndürülenduration_in_traffic
değerinin çoğu gün gerçek seyahat süresinden daha uzun olması gerektiğini belirtir. Bununla birlikte, zaman zaman çok kötü trafik koşullarına sahip günler bu değeri aşabilir.optimistic
, döndürülenduration_in_traffic
değerinin çoğu gün gerçek seyahat süresinden daha kısa olması gerektiğini belirtir. Bununla birlikte, bazen trafik koşullarının iyi olduğu günler bu değerden daha hızlı olabilir.
Aşağıda arabayla yol tarifi için örnek bir DirectionsRequest
verilmiştir:
{ origin: 'Chicago, IL', destination: 'Los Angeles, CA', travelMode: 'DRIVING', drivingOptions: { departureTime: new Date(Date.now() + N), // for the time N milliseconds from now. trafficModel: 'optimistic' } }
Birim Sistemleri
Varsayılan olarak yol tarifleri, başlangıç ülkesinin veya bölgesinin birim sistemi kullanılarak hesaplanır ve görüntülenir.
(Not: Adresler her zaman varsayılan olarak metrik birimler yerine enlem/boylam koordinatları kullanılarak ifade edilen başlangıç noktaları.) Örneğin, "Chicago, IL" noktasından "Toronto, ONT" noktasına giden bir rotanın sonuçları mil cinsinden, tersine rotadaki sonuçlar ise kilometre cinsinden gösterilir. Aşağıdaki UnitSystem
değerlerinden birini kullanıp istek içinde açıkça bir tane ayarlayarak bu birim sistemini geçersiz kılabilirsiniz:
UnitSystem.METRIC
, metrik sistemin kullanımını belirtir. Mesafeler, kilometre cinsinden gösterilir.UnitSystem.IMPERIAL
, Imperial (İngilizce) sisteminin kullanımını belirtir. Mesafeler, mil cinsinden gösterilir.
Not: Bu birim sistem ayarı yalnızca kullanıcıya gösterilen metni etkiler. Yol tarifi sonucu ayrıca, kullanıcıya gösterilmeyen ve her zaman metre cinsinden ifade edilen mesafe değerleri de içerir.
Yol Tarifleri İçin Bölgeye Ağırlık Verme
Google Haritalar API'si Yol Tarifi Hizmeti, JavaScript önyüklemesini yüklediğiniz alan adından (bölge veya ülke) etkilenen adres sonuçlarını döndürür. (Çoğu kullanıcı https://maps.googleapis.com/
hizmetini yüklediğinden bu işlem, ABD'ye dolaylı bir alan adı ayarlar.) Önyüklemeyi desteklenen farklı bir alandan yüklerseniz ilgili alandan etkilenen sonuçlar alırsınız. Örneğin, "San Francisco" için yapılan arama, https://maps.googleapis.com/
(ABD) yükleyen uygulamalardan http://maps.google.es/
(İspanya) yükleyen uygulamalardan farklı sonuçlar döndürebilir.
Yol Tarifi hizmetini, region
parametresini kullanarak belirli bir bölgeye ağırlık veren sonuçlar döndürecek şekilde de ayarlayabilirsiniz. Bu parametre, iki karakterli (sayısal olmayan) bir Unicode bölge alt etiketi olarak belirtilen bir bölge kodu alır. Çoğu durumda bu etiketler, örneğin "co.uk"deki "uk" gibi iki karakterli ccTLD ("üst düzey alan") değerleriyle doğrudan eşleşir. Bazı durumlarda region
etiketi, bazen ccTLD değerlerinden (örneğin, "İngiltere" için GB") farklı olan ISO-3166-1 kodlarını da destekler.
region
parametresini kullanırken:
- Yalnızca bir ülke veya bölge belirtin. Birden çok değer yoksayılır ve isteğin başarısız olmasına neden olabilir.
- Yalnızca iki karakterli bölge alt etiketleri kullanın (Unicode CLDR biçimi). Diğer tüm girişler hataya neden olur.
Bölgeye ağırlık verme, yalnızca yol tariflerini destekleyen ülkeler ve bölgeler için desteklenir. Directions API'nin uluslararası kapsamını görmek için Google Haritalar Platformu Kapsam Ayrıntıları'na bakın.
Yol Tarifleri Oluşturma
route()
yöntemiyle DirectionsService
için yol tarifi isteği başlatmak, hizmet isteğinin tamamlanmasının ardından yürütülecek bir geri çağırmanın iletilmesini gerektirir. Bu geri çağırma, yanıtta bir DirectionsResult
ve DirectionsStatus
kodu döndürür.
Yol Tarifi Sorgusunun Durumu
DirectionsStatus
aşağıdaki değerleri döndürebilir:
OK
, yanıtın geçerli birDirectionsResult
içerdiğini belirtir.NOT_FOUND
, isteğin kaynak, hedef veya ara noktalarında belirtilen konumlardan en az birinin coğrafi kodlamasının yapılamadığını belirtir.ZERO_RESULTS
, başlangıç noktası ile hedef arasında rota bulunamadığını belirtir.MAX_WAYPOINTS_EXCEEDED
,DirectionsRequest
içinde çok fazlaDirectionsWaypoint
alanı sağlandığını gösterir. Referans noktası sınırlarıyla ilgili aşağıdaki bölüme bakın.MAX_ROUTE_LENGTH_EXCEEDED
, istenen rotanın çok uzun olduğunu ve işlenemediğini belirtir. Bu hata, daha karmaşık yol tarifleri döndürüldüğünde ortaya çıkar. Ara nokta, dönüş veya talimat sayısını azaltmayı deneyin.INVALID_REQUEST
, sağlananDirectionsRequest
değerinin geçersiz olduğunu belirtir. Bu hata kodunun en yaygın nedenleri, bir kalkış noktasının veya hedefin eksik olması ya da ara noktalar içeren bir toplu taşıma isteğidir.OVER_QUERY_LIMIT
, web sayfasının izin verilen dönem içinde çok fazla istek gönderdiğini belirtir.REQUEST_DENIED
, web sayfasının yol tarifi hizmetini kullanmasına izin verilmediğini belirtir.UNKNOWN_ERROR
, sunucu hatası nedeniyle yol tarifi isteğinin işlenemediğini belirtir. Tekrar denerseniz istek başarılı olabilir.
Sonucu işlemeden önce bu değeri kontrol ederek yol tarifi sorgusunun geçerli sonuçlar döndürdüğünden emin olmanız gerekir.
Yol Tarifi Sonucunu Görüntüleme
DirectionsResult
, yol tarifi sorgusunun sonucunu içerir. Bu sorgusu kendiniz işleyebilir veya sonucun haritada gösterilmesini otomatik olarak işleyebilen bir DirectionsRenderer
nesnesine iletebilirsiniz.
DirectionsRenderer
kullanarak bir DirectionsResult
görüntülemek için aşağıdakileri yapmanız gerekir:
- Bir
DirectionsRenderer
nesnesi oluşturun. - İletilen haritaya bağlamak için oluşturucuda
setMap()
çağrısı yapın. - Oluşturucuda
setDirections()
çağrısı yaparak yukarıda belirtildiği gibiDirectionsResult
parametresini iletin. Oluşturucu birMVCObject
olduğundan, özelliklerinde yapılan tüm değişiklikleri otomatik olarak algılar ve ilişkili yol tarifleri değiştiğinde haritayı günceller.
Aşağıdaki örnekte, 66 numaralı Rota üzerindeki iki konum arasındaki yol tarifi hesaplanmıştır. Başlangıç ve hedef, açılır listelerde belirtilen "start"
ve "end"
değerlerine göre belirlenir. DirectionsRenderer
, belirtilen konumlar arasındaki çoklu çizgiyi ve varsa işaretçilerin başlangıç noktası, varış noktası ve herhangi bir ara nokta arasındaki yerleşimini işler.
function initMap() { var directionsService = new google.maps.DirectionsService(); var directionsRenderer = new google.maps.DirectionsRenderer(); var chicago = new google.maps.LatLng(41.850033, -87.6500523); var mapOptions = { zoom:7, center: chicago } var map = new google.maps.Map(document.getElementById('map'), mapOptions); directionsRenderer.setMap(map); } function calcRoute() { var start = document.getElementById('start').value; var end = document.getElementById('end').value; var request = { origin: start, destination: end, travelMode: 'DRIVING' }; directionsService.route(request, function(result, status) { if (status == 'OK') { directionsRenderer.setDirections(result); } }); }
HTML gövdesinde:
<div> <strong>Start: </strong> <select id="start" onchange="calcRoute();"> <option value="chicago, il">Chicago</option> <option value="st louis, mo">St Louis</option> <option value="joplin, mo">Joplin, MO</option> <option value="oklahoma city, ok">Oklahoma City</option> <option value="amarillo, tx">Amarillo</option> <option value="gallup, nm">Gallup, NM</option> <option value="flagstaff, az">Flagstaff, AZ</option> <option value="winona, az">Winona</option> <option value="kingman, az">Kingman</option> <option value="barstow, ca">Barstow</option> <option value="san bernardino, ca">San Bernardino</option> <option value="los angeles, ca">Los Angeles</option> </select> <strong>End: </strong> <select id="end" onchange="calcRoute();"> <option value="chicago, il">Chicago</option> <option value="st louis, mo">St Louis</option> <option value="joplin, mo">Joplin, MO</option> <option value="oklahoma city, ok">Oklahoma City</option> <option value="amarillo, tx">Amarillo</option> <option value="gallup, nm">Gallup, NM</option> <option value="flagstaff, az">Flagstaff, AZ</option> <option value="winona, az">Winona</option> <option value="kingman, az">Kingman</option> <option value="barstow, ca">Barstow</option> <option value="san bernardino, ca">San Bernardino</option> <option value="los angeles, ca">Los Angeles</option> </select> </div>
Aşağıdaki örnekte San Francisco, Kaliforniya'daki Haight-Ashbury ile Ocean Beach arasında farklı seyahat modları kullanılan yol tarifleri gösterilmektedir:
function initMap() { var directionsService = new google.maps.DirectionsService(); var directionsRenderer = new google.maps.DirectionsRenderer(); var haight = new google.maps.LatLng(37.7699298, -122.4469157); var oceanBeach = new google.maps.LatLng(37.7683909618184, -122.51089453697205); var mapOptions = { zoom: 14, center: haight } var map = new google.maps.Map(document.getElementById('map'), mapOptions); directionsRenderer.setMap(map); } function calcRoute() { var selectedMode = document.getElementById('mode').value; var request = { origin: haight, destination: oceanBeach, // Note that JavaScript allows us to access the constant // using square brackets and a string value as its // "property." travelMode: google.maps.TravelMode[selectedMode] }; directionsService.route(request, function(response, status) { if (status == 'OK') { directionsRenderer.setDirections(response); } }); }
HTML gövdesinde:
<div> <strong>Mode of Travel: </strong> <select id="mode" onchange="calcRoute();"> <option value="DRIVING">Driving</option> <option value="WALKING">Walking</option> <option value="BICYCLING">Bicycling</option> <option value="TRANSIT">Transit</option> </select> </div>
DirectionsRenderer
, çoklu çizgiyi ve ilişkili işaretçileri görüntülemenin yanı sıra yol tariflerinin bir dizi adım halinde gösterilmesini de yönetebilir. Bunu yapmak için DirectionsRenderer
cihazınızda setPanel()
yöntemini çağırarak bu bilgilerin gösterileceği <div>
kodunu iletin.
Bu şekilde hem uygun telif hakkı bilgilerini hem de sonuçla ilişkili olabilecek uyarıları görüntüleyebilirsiniz.
Metinli talimatlar, tarayıcının tercih ettiği dil ayarı veya language
parametresiyle API JavaScript'i yüklenirken belirtilen dil kullanılarak sağlanır. (Daha fazla bilgi için
Yerelleştirme sayfasını inceleyin.) Toplu taşıma yol tariflerinde, söz konusu toplu taşıma durağının saati, saat diliminde görüntülenir.
Aşağıdaki örnek, yukarıda gösterilenle aynıdır, ancak yol tariflerinin görüntüleneceği bir <div>
paneli içerir:
function initMap() { var directionsService = new google.maps.DirectionsService(); var directionsRenderer = new google.maps.DirectionsRenderer(); var chicago = new google.maps.LatLng(41.850033, -87.6500523); var mapOptions = { zoom:7, center: chicago } var map = new google.maps.Map(document.getElementById('map'), mapOptions); directionsRenderer.setMap(map); directionsRenderer.setPanel(document.getElementById('directionsPanel')); } function calcRoute() { var start = document.getElementById('start').value; var end = document.getElementById('end').value; var request = { origin:start, destination:end, travelMode: 'DRIVING' }; directionsService.route(request, function(response, status) { if (status == 'OK') { directionsRenderer.setDirections(response); } }); }
HTML gövdesinde:
<div id="map" style="float:left;width:70%;height:100%"></div> <div id="directionsPanel" style="float:right;width:30%;height:100%"></div>
DirectionsResult Nesnesi
DirectionsService
öğesine yol tarifi isteği gönderdiğinizde, durum kodu ve sonuç olan DirectionsResult
nesnesinden oluşan bir yanıt alırsınız. DirectionsResult
, aşağıdaki alanları içeren bir nesne değişmez değeridir:
geocoded_waypoints[]
, her biri kaynak, hedef ve ara noktaların coğrafi kodlaması hakkında ayrıntılar içeren birDirectionsGeocodedWaypoint
nesne dizisi içerir.routes[]
,DirectionsRoute
nesne dizisi içeriyor. Her rota, kalkış noktasındanDirectionsRequest
belgesinde belirtilen hedefe nasıl ulaşacağınızı belirtir. Genellikle isteğinprovideRouteAlternatives
alanıtrue
olarak ayarlanmadığı ve birden fazla rota döndürülebileceği sürece belirli bir istek için yalnızca bir rota döndürülür.
Not: via_waypoint
özelliği, alternatif rotalarda kullanımdan kaldırılmıştır. Sürüm 3.27, API'nin alternatif rotalarda ara noktalar aracılığıyla ekstra bilgiler sağlayan son sürümüdür. API'nin 3.28 ve üzeri sürümleri için alternatif rotaların sürüklenmesini devre dışı bırakarak Yol Tarifi hizmetini kullanarak sürüklenebilir yol tariflerini uygulamaya devam edebilirsiniz.
Yalnızca ana rota sürüklenebilir olmalıdır. Kullanıcılar, alternatif bir rotayla eşleşene kadar ana rotayı sürükleyebilir.
Yol Tarifleri Coğrafi Kodlanmış Referans Noktaları
DirectionsGeocodedWaypoint
; kaynak, hedef ve ara noktaların coğrafi kodlaması hakkında ayrıntılar içerir.
DirectionsGeocodedWaypoint
, aşağıdaki alanları içeren bir nesne değişmez değeridir:
geocoder_status
, coğrafi kodlama işleminden kaynaklanan durum kodunu gösterir. Bu alan aşağıdaki değerleri içerebilir."OK"
hata oluşmadığını belirtir; adres başarıyla ayrıştırılmış ve en az bir coğrafi kod döndürülmüştür."ZERO_RESULTS"
, coğrafi kodun başarılı olduğunu ancak hiçbir sonuç döndürmediğini belirtir. Bu durum, coğrafi kodlayıcı var olmayan biraddress
iletilmişse gerçekleşebilir.
-
partial_match
, coğrafi kodlayıcının orijinal istek için tam eşleme döndürmediğini, ancak istenen adresin bir kısmıyla eşleşebildiğini belirtir. Orijinal talebi inceleyerek yazım hataları ve/veya eksik adres olup olmadığını kontrol edebilirsiniz.Kısmi eşleşmeler genellikle istekte bulunduğunuz şehirde bulunmayan açık adresler için meydana gelir. Bir istek aynı konumdaki iki veya daha fazla konumla eşleştiğinde de kısmi eşleşmeler döndürülebilir. Örneğin, "Yalova Caddesi, İstanbul, Türkiye" her iki şehir için de kısmi eşleşme döndürür. İstek yanlış yazılmış bir adres bileşeni içeriyorsa coğrafi kodlama hizmetinin alternatif bir adres önerebileceğini unutmayın. Bu şekilde tetiklenen öneriler de kısmi eşleşme olarak işaretlenir.
place_id
, bir yerin benzersiz tanımlayıcısıdır ve diğer Google API'leriyle birlikte kullanılabilir. Örneğin, yerel bir işletme hakkında telefon numarası, çalışma saatleri, kullanıcı yorumları gibi ayrıntıları öğrenmek içinplace_id
uygulamasını Google Places API kitaplığıyla kullanabilirsiniz. Yer kimliğine genel bakış bölümünü inceleyin.types[]
, döndürülen sonucun türünü belirten bir dizidir. Bu dizi, sonuçta döndürülen özellik türünü tanımlayan bir sıfır veya daha fazla etiket kümesi içerir. Örneğin, "Chicago"nun coğrafi kodu "Chicago"nun bir şehir olduğunu belirten "konum" değerini ve ayrıca "politik" değerini ("politik" olarak) döndürür.
Yol Tarifi Rotaları
Not: Eski DirectionsTrip
nesnesinin adı DirectionsRoute
olarak değiştirildi. Rotanın artık yalnızca bir ebeveyn seyahatinin ayağı yerine yolculuğun başlangıcından bitişine kadar olan tüm aşamalarını kapsadığını unutmayın.
Bir DirectionsRoute
, belirtilen kaynak ve hedeften tek bir sonuç içerir. Bu rota, herhangi bir ara noktanın belirtilip belirtilmediğine bağlı olarak bir veya daha fazla ayaktan (DirectionsLeg
türünde) oluşabilir. Rotada, yönlendirme bilgilerinin yanı sıra kullanıcıya gösterilmesi gereken telif hakkı ve uyarı bilgileri de bulunur.
DirectionsRoute
, aşağıdaki alanları içeren bir nesne değişmez değeridir:
legs[]
, her biri rotanın bir ayağı hakkında, belirtilen rotadaki iki konumdan alınan bilgileri içeren birDirectionsLeg
nesne dizisi içerir. Belirtilen her referans noktası veya varış noktası için ayrı bir ayak mevcut olacaktır. (Ara noktası olmayan bir rota tam olarak birDirectionsLeg
içerir.) Her bacak,DirectionStep
dizisinden oluşur.waypoint_order
, hesaplanan rotadaki ara noktaların sırasını gösteren bir dizi içerir.DirectionsRequest
,optimizeWaypoints: true
geçirildiyse bu dizi değiştirilmiş bir sıra içerebilir.overview_path
, sonuçta ortaya çıkan yol tariflerinin yaklaşık (düzgünleştirilmiş) yolunu temsil eden birLatLng
dizisi içerir.overview_polyline
, rotanın kodlanmış çoklu çizgi gösterimini barındıran tek birpoints
nesnesi içerir. Bu çoklu çizgi, sonuçta ortaya çıkan yönlerin yaklaşık (düzgünleştirilmiş) bir yoludur.bounds
, bu rota üzerindeki çoklu çizginin sınırlarını gösteren birLatLngBounds
içeriyor.copyrights
, bu yol için görüntülenecek telif hakkı metnini içerir.warnings[]
, bu yol tarifleri gösterilirken görüntülenecek bir dizi uyarı içerir. SağlananDirectionsRenderer
nesnesini kullanmazsanız bu uyarıları kendiniz işlemeniz ve görüntülemeniz gerekir.fare
, bu rotadaki toplam ücreti (yani toplam bilet ücretlerini) içerir. Bu tesis, yalnızca toplu taşıma istekleri için ve yalnızca tüm toplu taşıma ayakları için ücret bilgilerinin sunulduğu rotalar için döndürülür. Bilgiler şunları içerir:currency
: Tutarın ifade edildiği para birimini belirten ISO 4217 para birimi kodu.value
: Yukarıda belirtilen para birimi cinsinden toplam ücret tutarı.
Yol Tarifi Ayakları
Not: Eski DirectionsRoute
nesnesinin adı DirectionsLeg
olarak değiştirildi.
DirectionsLeg
, hesaplanan rotadaki başlangıç noktasından hedefe giden yolculuğun tek bir ayağını tanımlar.
Ara nokta içermeyen rotalar için rota tek bir "bacaktan" oluşur ancak bir veya daha fazla ara nokta tanımlayan rotalar için rota, yolculuğun belirli ayaklarına karşılık gelen bir veya daha fazla ayaktan oluşur.
DirectionsLeg
, aşağıdaki alanları içeren bir nesne değişmez değeridir:
steps[]
, yolculuğun ayağının her bir adımıyla ilgili bilgileri belirten birDirectionsStep
nesne dizisi içerir.distance
, bu bacağın katettiği toplam mesafeyi aşağıdaki biçimde birDistance
nesnesi olarak gösterir:value
, mesafeyi metre cinsinden gösterirtext
, mesafenin dize temsilini içerir. Bu gösterim, varsayılan olarak kaynakta kullanılan birimler halinde gösterilir. (Örneğin, ABD içindeki herhangi bir kalkış noktası için mil kullanılır.) Orijinal sorguda özel olarak birUnitSystem
ayarlayarak bu birim sistemini geçersiz kılabilirsiniz. Kullandığınız birim sisteminden bağımsız olarakdistance.value
alanının her zaman metre cinsinden ifade edilen bir değer içerdiğini unutmayın.
Mesafe bilinmiyorsa bu alanlar tanımsız olabilir.
duration
, aşağıdaki biçimde birDuration
nesnesi olarak bu ayağın toplam süresini gösterir:value
, süreyi saniye cinsinden gösterir.text
, sürenin dize temsilini içerir.
Süre bilinmiyorsa bu alanlar tanımsız olabilir.
duration_in_traffic
, mevcut trafik koşulları dikkate alınarak bu aşamanın toplam süresini gösterir.duration_in_traffic
, yalnızca aşağıdakilerin tümü doğruysa döndürülür:- İstek, molalarda ara noktaları içermiyor. Yani,
stopover
değerinintrue
olduğu ara noktaları içermez. - İstek özellikle arabayla yol tarifi için gönderildi.
mode
özelliğidriving
olarak ayarlandı. departureTime
, istektekidrivingOptions
alanının bir parçası olarak eklenir.- İstenen rotanın trafik koşulları mevcut.
duration_in_traffic
aşağıdaki alanları içerir:value
, süreyi saniye cinsinden gösterir.text
, sürenin kullanıcılar tarafından okunabilen bir temsilini içeriyor.
- İstek, molalarda ara noktaları içermiyor. Yani,
arrival_time
, bu ayak için tahmini varış zamanını içerir. Bu tesis yalnızca toplu taşıma yol tarifleri için döndürülür. Sonuç, üç özelliğe sahip birTime
nesnesi olarak döndürülür:value
JavaScriptDate
nesnesi olarak belirtilen süre.- Dize olarak belirtilen zamanı
text
. Saat, toplu taşıma durağının saat diliminde gösterilir. time_zone
, bu istasyonun saat dilimini içerir. Değer, IANA Saat Dilimi Veritabanı'nda tanımlandığı üzere saat diliminin adıdır, ör. "America/New_York".
departure_time
, bu ayak içinTime
nesnesi olarak belirtilen tahmini kalkış saatini içerir.departure_time
, yalnızca toplu taşıma yol tarifleri için kullanılabilir.start_location
, bu bacağın başlangıç noktasınınLatLng
değerini içerir. Yol Tarifi Web Hizmeti, konumlar arasındaki yol tariflerini başlangıç ve bitiş noktalarında en yakın ulaşım seçeneğini (genellikle bir yol) kullanarak hesapladığından,start_location
, örneğin bir yol başlangıç noktasına yakın değilse, bu bacağın belirtilen başlangıç noktasından farklı olabilir.end_location
, bu aşamanın hedefininLatLng
alanını içeriyor.DirectionsService
, konumlar arasındaki yol tariflerini başlangıç ve varış noktalarında en yakın ulaşım seçeneğini (genellikle bir yol) kullanarak hesapladığı içinend_location
, örneğin bir yol hedefe yakın değilse bu ayağın sağlanan hedefinden farklı olabilir.start_address
, bu ayağın başlangıcının okunabilir adresini (genellikle bir açık adres) içerir.
Bu içeriğin olduğu gibi okunması amaçlanmıştır. Biçimlendirilmiş adresi programlı bir şekilde ayrıştırmayın.end_address
, bu ayağın sonundaki okunabilir adresi (genellikle açık adres) içerir.
Bu içeriğin olduğu gibi okunması amaçlanmıştır. Biçimlendirilmiş adresi programlı bir şekilde ayrıştırmayın.
Yol Tarifi Adımları
DirectionsStep
, bir yön rotasının en atomik birimidir. Yolculuk sırasında belirli, tek bir talimatı açıklayan tek bir adım içerir. Ör. "B konumunda sola dönün. 4. Cad." Bu adım yalnızca talimatı açıklamakla kalmaz, aynı zamanda bu adımın aşağıdaki adımla ilişkisine dair mesafe ve süre bilgilerini de içerir.
Örneğin, "I-80 Batı'ya girin" şeklinde ifade edilen bir adım, "37 mil" ve "40 dakika" uzunluğunda olabilir ve bu, bir sonraki adımın, bu adımdan itibaren 37 mil/40 dakika olduğunu gösterir.
Toplu taşıma yol tariflerini aramak için Yol Tarifi hizmetini kullanırken, adımlar dizisi ek Toplu Taşımaya Özgü Bilgiler'i bir transit
nesnesi biçiminde içerir. Yol tarifi birden fazla ulaşım modu içeriyorsa steps[]
dizisinde yürüyüş veya arabayla yolculuk adımları için ayrıntılı yol tarifleri sağlanır.
Örneğin, bir yürüyüş adımı başlangıç ve bitiş konumlarından yol tariflerini içerir: "İzmit Caddesi'ne yürüyerek git". Bu adım, steps[]
dizisindeki rota için ayrıntılı yaya yol tarifleri içerir. Örneğin: "Kuzeybatıya doğru yola çıkın", "Alious Walker'a doğru sola dönün" ve "Innes Bulvarı üzerinde sola dönün".
DirectionsStep
, aşağıdaki alanları içeren bir nesne değişmez değeridir:
instructions
, bir metin dizesinde bu adımla ilgili talimatları içerir.distance
, bir sonraki adıma kadar bu adımın katettiği mesafeyiDistance
nesnesi olarak içerir. (YukarıdakiDirectionsLeg
bölümünde yer alan açıklamaya bakın.) Mesafe bilinmiyorsa bu alan tanımsız olabilir.duration
, bu adımı gerçekleştirmek için gereken tahmini süreyi bir sonraki adıma kadarDuration
nesnesi olarak içerir. (YukarıdakiDirectionsLeg
bölümünde yer alan açıklamaya bakın.) Süre bilinmiyorsa bu alan tanımsız olabilir.start_location
, bu adımın başlangıç noktasının coğrafi kodluLatLng
kodunu içerir.end_location
, bu adımın bitiş noktasınınLatLng
değerini içeriyor.polyline
, adımın kodlanmış çoklu çizgi temsilini barındıran tek birpoints
nesnesi içerir. Bu çoklu çizgi, adımın yaklaşık (düzgünleştirilmiş) bir yoludur.steps[]
toplu taşıma yol tariflerinde yürüyüş veya arabayla adımlar için ayrıntılı yol tarifi içeren birDirectionsStep
nesne değişmez değeri. Alt adımlar yalnızca toplu taşıma yol tarifleri için kullanılabilir.travel_mode
, bu adımda kullanılanTravelMode
değerini içerir. Toplu taşıma yol tarifleri, yaya ve toplu taşıma yol tariflerinin bir kombinasyonunu içerebilir.path
, bu adımın rotasını açıklayan birLatLngs
dizisi içerir.transit
, varış ve kalkış saatleri ile toplu taşıma hattının adı gibi toplu taşımaya özgü bilgileri içerir.
Toplu Taşımaya Özgü Bilgiler
Toplu taşıma yol tarifleri, diğer ulaşım modlarıyla alakalı olmayan ek bilgiler sunar. Bu ek özellikler, TransitDetails
nesnesi aracılığıyla gösterilir ve DirectionsStep
özelliğinin bir özelliği olarak döndürülür. TransitDetails
nesnesinden, aşağıda açıklandığı gibi TransitStop
, TransitLine
, TransitAgency
ve VehicleType
nesneleriyle ilgili ek bilgilere erişebilirsiniz.
Toplu Taşıma Ayrıntıları
TransitDetails
nesnesi aşağıdaki özellikleri gösterir:
arrival_stop
, varış istasyonunu/durdurmayı aşağıdaki özelliklerle temsil eden birTransitStop
nesnesi içerir:name
toplu taşıma istasyonunun/durağın adını girin. ör. "Taksim Meydanı".location
toplu taşıma istasyonunun/durağının konumunuLatLng
olarak gösterir.
departure_stop
, kalkış istasyonunu/durdurmayı temsil eden birTransitStop
nesnesi içeriyor.arrival_time
, üç özelliğe sahip birTime
nesnesi olarak belirtilen varış saatini içerir:value
JavaScriptDate
nesnesi olarak belirtilen süre.- Dize olarak belirtilen zamanı
text
. Saat, toplu taşıma durağının saat diliminde gösterilir. time_zone
, bu istasyonun saat dilimini içerir. Değer, IANA Saat Dilimi Veritabanı'nda tanımlandığı üzere saat diliminin adıdır, ör. "America/New_York".
departure_time
,Time
nesnesi olarak belirtilen kalkış saatini içerir.headsign
, araç üzerinde veya kalkış durağında belirtildiği gibi, bu hatta seyahat edilecek yönü belirtir. Bu genellikle terminal istasyonu olur.headway
kullanılabilir olduğunda, şu anda aynı duraktan yapılan kalkışlar arasında beklenen saniye sayısını belirtir. Örneğin,headway
değerinin 600 olduğunu varsayalım. Otobüsünüzü kaçırırsanız on dakika beklemeniz gerekir.line
, bu adımda kullanılan toplu taşıma hattı hakkında bilgi içerenTransitLine
nesne değişmez değeri içerir.TransitLine
, satırın adını ve operatörünüTransitLine
referans dokümanlarında açıklanan diğer özelliklerle birlikte sağlar.num_stops
, bu adımdaki durak sayısını içerir. Varış durağı dahildir ancak kalkış durağı dahil değildir. Örneğin, yol tarifiniz A Durağı'ndan çıkma, B ve C duraklarından geçme ve D durağına varmayı içeriyorsanum_stops
, 3 değerini döndürür.
Transit Hat
TransitLine
nesnesi aşağıdaki özellikleri gösterir:
name
, bu toplu taşıma hattının tam adını içerir. Ör. "İstiklal Caddesi 225" ya da "Kadıköy İskelesi".short_name
, bu toplu taşıma hattının kısa adını içerir. Bu, normalde "2" veya "M14" gibi bir satır numarası olacaktır.agencies
, tek birTransitAgency
nesnesi içeren dizidir.TransitAgency
nesnesi, aşağıdaki özellikler de dahil olmak üzere bu satırın operatörü hakkında bilgi sağlar:name
, transit operatörünün adını içerir.phone
, toplu taşıma acentesinin telefon numarasını içerir.url
, transit operatörün URL'sini içerir.
Not: Toplu taşıma yol tariflerini
DirectionsRenderer
nesnesini kullanmak yerine manuel olarak oluşturuyorsanız gezi sonuçlarına hizmet veren toplu taşıma acentelerinin adlarını ve URL'lerini göstermeniz gerekir.url
, bu toplu taşıma hattının transit operatörü tarafından sağlanan URL'sini içeriyor.icon
, bu satırla ilişkili simge için bir URL içeriyor. Çoğu şehir, araç türüne göre farklılık gösteren genel simgeler kullanır. New York metro sistemi gibi bazı toplu taşıma hatlarında o hata özgü simgeler bulunur.color
, bu toplu taşıma işleminin tabelasında yaygın olarak kullanılan rengi içerir. Renk, onaltılık dize olarak belirtilir. Örneğin: #FF0033.text_color
, bu satırın tabelasında yaygın olarak kullanılan metnin rengini içerir. Renk, onaltılık dize olarak belirtilir.vehicle
, aşağıdaki özellikleri içeren birVehicle
nesnesi içeriyor:name
, bu hattaki aracın adını içerir. ör. "Metro."type
, bu hatta kullanılan aracın türünü içerir. Desteklenen değerlerin tam listesi için Araç Türü belgelerine bakın.icon
, bu araç türüyle yaygın olarak ilişkilendirilen simgenin URL'sini içeriyor.local_icon
, yerel ulaşım tabelalarına göre bu araç türüyle ilişkili simgenin URL'sini içerir.
Araç Türü
VehicleType
nesnesi aşağıdaki özellikleri gösterir:
Değer | Tanım |
---|---|
VehicleType.RAIL |
Raylı sistem |
VehicleType.METRO_RAIL |
Hafif raylı taşıma. |
VehicleType.SUBWAY |
Yeraltı hafif raylı sistem. |
VehicleType.TRAM |
Yer üstü hafif raylı sistem. |
VehicleType.MONORAIL |
Monoray. |
VehicleType.HEAVY_RAIL |
Ağır tren. |
VehicleType.COMMUTER_TRAIN |
Banliyö treni. |
VehicleType.HIGH_SPEED_TRAIN |
Yüksek hızlı tren. |
VehicleType.BUS |
Otobüs. |
VehicleType.INTERCITY_BUS |
Şehirlerarası otobüs. |
VehicleType.TROLLEYBUS |
Troleybüs. |
VehicleType.SHARE_TAXI |
Paylaşımlı taksi, rotanın herhangi bir yerinde yolcu alıp alma özelliğine sahip bir otobüs türüdür. |
VehicleType.FERRY |
Feribot. |
VehicleType.CABLE_CAR |
Genellikle yerde, kabloyla çalışan bir taşıt. Teleferikler, VehicleType.GONDOLA_LIFT türünde olabilir. |
VehicleType.GONDOLA_LIFT |
Teleferik. |
VehicleType.FUNICULAR |
Kabloyla dik bir yokuşta çekilen araç. Füniküler, genellikle iki araçtan oluşur. Bu araçların her biri, diğeri için karşı ağırlık görevi görür. |
VehicleType.OTHER |
Diğer tüm araçlar bu türü döndürür. |
Yol Tarifi Sonuçlarını İnceleme
DirectionsResults
bileşenleri (DirectionsRoute
, DirectionsLeg
, DirectionsStep
ve TransitDetails
) incelenebilir ve herhangi bir yol tarifi yanıtı ayrıştırılırken kullanılabilir.
Önemli: Toplu taşıma yol tariflerini DirectionsRenderer
nesnesini kullanmak yerine manuel olarak oluşturuyorsanız gezi sonuçlarına hizmet veren toplu taşıma acentelerinin adlarını ve URL'lerini göstermeniz gerekir.
Aşağıdaki örnekte, New York City'deki belirli turistik yerler için yaya yol tarifleri gösterilmektedir. Her adım için işaretçi eklemek üzere rotanın DirectionsStep
öğesini inceleriz ve bu adımla ilgili talimat metni içeren bir InfoWindow
öğesine bilgi ekleriz.
Not: Yaya yol tarifini hesapladığımız için tüm uyarıları kullanıcıya ayrı bir <div>
panelinde de gösteririz.
var map; var directionsRenderer; var directionsService; var stepDisplay; var markerArray = []; function initMap() { // Instantiate a directions service. directionsService = new google.maps.DirectionsService(); // Create a map and center it on Manhattan. var manhattan = new google.maps.LatLng(40.7711329, -73.9741874); var mapOptions = { zoom: 13, center: manhattan } map = new google.maps.Map(document.getElementById('map'), mapOptions); // Create a renderer for directions and bind it to the map. var rendererOptions = { map: map } directionsRenderer = new google.maps.DirectionsRenderer(rendererOptions) // Instantiate an info window to hold step text. stepDisplay = new google.maps.InfoWindow(); } function calcRoute() { // First, clear out any existing markerArray // from previous calculations. for (i = 0; i < markerArray.length; i++) { markerArray[i].setMap(null); } // Retrieve the start and end locations and create // a DirectionsRequest using WALKING directions. var start = document.getElementById('start').value; var end = document.getElementById('end').value; var request = { origin: start, destination: end, travelMode: 'WALKING' }; // Route the directions and pass the response to a // function to create markers for each step. directionsService.route(request, function(response, status) { if (status == "OK") { var warnings = document.getElementById("warnings_panel"); warnings.innerHTML = "" + response.routes[0].warnings + ""; directionsRenderer.setDirections(response); showSteps(response); } }); } function showSteps(directionResult) { // For each step, place a marker, and add the text to the marker's // info window. Also attach the marker to an array so we // can keep track of it and remove it when calculating new // routes. var myRoute = directionResult.routes[0].legs[0]; for (var i = 0; i < myRoute.steps.length; i++) { var marker = new google.maps.Marker({ position: myRoute.steps[i].start_point, map: map }); attachInstructionText(marker, myRoute.steps[i].instructions); markerArray[i] = marker; } } function attachInstructionText(marker, text) { google.maps.event.addListener(marker, 'click', function() { stepDisplay.setContent(text); stepDisplay.open(map, marker); }); }
HTML gövdesinde:
<div> <strong>Start: </strong> <select id="start"> <option value="penn station, new york, ny">Penn Station</option> <option value="grand central station, new york, ny">Grand Central Station</option> <option value="625 8th Avenue New York NY 10018">Port Authority Bus Terminal</option> <option value="staten island ferry terminal, new york, ny">Staten Island Ferry Terminal</option> <option value="101 E 125th Street, New York, NY">Harlem - 125th St Station</option> </select> <strong>End: </strong> <select id="end" onchange="calcRoute();"> <option value="260 Broadway New York NY 10007">City Hall</option> <option value="W 49th St & 5th Ave, New York, NY 10020">Rockefeller Center</option> <option value="moma, New York, NY">MOMA</option> <option value="350 5th Ave, New York, NY, 10118">Empire State Building</option> <option value="253 West 125th Street, New York, NY">Apollo Theatre</option> <option value="1 Wall St, New York, NY">Wall St</option> </select> <div>
Rotalarda Referans Noktaları Kullanma
DirectionsRequest'nde de belirtildiği üzere, yaya, bisiklet veya arabayla yol tarifi için Yol Tarifi hizmetini kullanarak rotaları hesaplarken,
ara noktalar da
(DirectionsWaypoint
türünde) belirtebilirsiniz. Toplu taşıma yol tarifleri için referans noktaları kullanılamaz.
Ara noktalar, ek konumlar üzerinden rotaları hesaplamanıza olanak tanır. Bu durumda, döndürülen rota belirtilen ara noktalardan geçer.
waypoint
aşağıdaki alanlardan oluşur:
location
(zorunlu), referans noktasının adresini belirtir.stopover
(isteğe bağlı), bu referans noktasının rotadaki gerçek bir durak mı (true
) yoksa yalnızca belirtilen konum (false
) üzerinden rota belirleme tercihi mi olduğunu belirtir. Varsayılan olarak duraklama sayısıtrue
şeklindedir.
Varsayılan olarak Yol Tarifi hizmeti, verilen ara noktalar üzerinden rotayı verilen sırada hesaplar. İsteğe bağlı olarak, Yol Tarifi hizmetinin, ara noktaları daha verimli bir sırada yeniden düzenleyerek sağlanan rotayı optimize etmesine izin vermek için
DirectionsRequest
içinde optimizeWaypoints: true
kullanabilirsiniz. (Bu optimizasyon,
seyahat eden satıcı probleminin bir uygulamasıdır.) Seyahat süresi, optimize edilen birincil faktördür ancak mesafe, dönüş sayısı ve daha birçok etken en verimli rotaya karar verilirken göz önünde bulundurulabilir. Tüm
ara noktalar, Yol Tarifi hizmetinin rotalarını optimize etmek için duraklama noktaları olmalıdır.
Yol Tarifleri hizmetine referans noktalarının sırasını optimize etmesi için talimat verirseniz sıra, DirectionsResult
nesnesindeki waypoint_order
alanında döndürülür.
Aşağıdaki örnekte, çeşitli başlangıç noktaları, bitiş noktaları ve ara noktaları kullanarak ABD'deki ülkeler arası rotalar hesaplanmaktadır. (Birden fazla ara nokta seçmek için, listedeki öğeleri seçerken
Ctrl-Tıklama tuşlarına basın.)
Her rotanın başlangıç ve bitiş noktası metnini bize sağlamak için routes.start_address
ve routes.end_address
öğelerini incelediğimizi unutmayın.
TypeScript
function initMap(): void { const directionsService = new google.maps.DirectionsService(); const directionsRenderer = new google.maps.DirectionsRenderer(); const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 6, center: { lat: 41.85, lng: -87.65 }, } ); directionsRenderer.setMap(map); (document.getElementById("submit") as HTMLElement).addEventListener( "click", () => { calculateAndDisplayRoute(directionsService, directionsRenderer); } ); } function calculateAndDisplayRoute( directionsService: google.maps.DirectionsService, directionsRenderer: google.maps.DirectionsRenderer ) { const waypts: google.maps.DirectionsWaypoint[] = []; const checkboxArray = document.getElementById( "waypoints" ) as HTMLSelectElement; for (let i = 0; i < checkboxArray.length; i++) { if (checkboxArray.options[i].selected) { waypts.push({ location: (checkboxArray[i] as HTMLOptionElement).value, stopover: true, }); } } directionsService .route({ origin: (document.getElementById("start") as HTMLInputElement).value, destination: (document.getElementById("end") as HTMLInputElement).value, waypoints: waypts, optimizeWaypoints: true, travelMode: google.maps.TravelMode.DRIVING, }) .then((response) => { directionsRenderer.setDirections(response); const route = response.routes[0]; const summaryPanel = document.getElementById( "directions-panel" ) as HTMLElement; summaryPanel.innerHTML = ""; // For each route, display summary information. for (let i = 0; i < route.legs.length; i++) { const routeSegment = i + 1; summaryPanel.innerHTML += "<b>Route Segment: " + routeSegment + "</b><br>"; summaryPanel.innerHTML += route.legs[i].start_address + " to "; summaryPanel.innerHTML += route.legs[i].end_address + "<br>"; summaryPanel.innerHTML += route.legs[i].distance!.text + "<br><br>"; } }) .catch((e) => window.alert("Directions request failed due to " + status)); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
function initMap() { const directionsService = new google.maps.DirectionsService(); const directionsRenderer = new google.maps.DirectionsRenderer(); const map = new google.maps.Map(document.getElementById("map"), { zoom: 6, center: { lat: 41.85, lng: -87.65 }, }); directionsRenderer.setMap(map); document.getElementById("submit").addEventListener("click", () => { calculateAndDisplayRoute(directionsService, directionsRenderer); }); } function calculateAndDisplayRoute(directionsService, directionsRenderer) { const waypts = []; const checkboxArray = document.getElementById("waypoints"); for (let i = 0; i < checkboxArray.length; i++) { if (checkboxArray.options[i].selected) { waypts.push({ location: checkboxArray[i].value, stopover: true, }); } } directionsService .route({ origin: document.getElementById("start").value, destination: document.getElementById("end").value, waypoints: waypts, optimizeWaypoints: true, travelMode: google.maps.TravelMode.DRIVING, }) .then((response) => { directionsRenderer.setDirections(response); const route = response.routes[0]; const summaryPanel = document.getElementById("directions-panel"); summaryPanel.innerHTML = ""; // For each route, display summary information. for (let i = 0; i < route.legs.length; i++) { const routeSegment = i + 1; summaryPanel.innerHTML += "<b>Route Segment: " + routeSegment + "</b><br>"; summaryPanel.innerHTML += route.legs[i].start_address + " to "; summaryPanel.innerHTML += route.legs[i].end_address + "<br>"; summaryPanel.innerHTML += route.legs[i].distance.text + "<br><br>"; } }) .catch((e) => window.alert("Directions request failed due to " + status)); } window.initMap = initMap;
Referans Noktalarına İlişkin Sınırlar ve Kısıtlamalar
Aşağıdaki kullanım sınırları ve kısıtlamalar geçerlidir:
- Maps JavaScript API'de Yol Tarifi hizmeti kullanılırken izin verilen maksimum ara nokta sayısı ile birlikte başlangıç noktası ve hedef sayısı 25'tir. Sınırlar Directions API web hizmeti için aynıdır.
- Directions API web hizmeti için müşterilere, 25 ara nokta ile birlikte kalkış ve hedefe izin verilir.
- Google Haritalar Platformu Premium Plan müşterileri, 25 ara nokta ile birlikte kalkış ve varış noktasına izin verir.
- Toplu taşıma yol tariflerinde ara noktalar desteklenmez.
Sürüklenebilir Yol Tarifleri
Kullanıcılar, sürüklenebilir olmaları durumunda, DirectionsRenderer
kullanarak görüntülenen bisiklet, yaya veya arabayla yol tariflerini dinamik olarak değiştirebilir. Böylece kullanıcılar, harita üzerinde gösterilen yolları tıklayıp sürükleyerek rotaları seçebilir ve değiştirebilir.
Bir oluşturucunun draggable
özelliğini true
şeklinde ayarlayarak, ekranının sürüklenebilir yol tariflerine izin verip vermediğini belirtirsiniz. Toplu taşıma yol tarifleri sürüklenebilir hale getirilemez.
Yol tarifleri sürüklenebilir olduğunda, kullanıcı oluşturulan sonucun yolunda (veya referans noktası) herhangi bir noktayı seçebilir ve belirtilen bileşeni yeni bir konuma taşıyabilir. DirectionsRenderer
, değiştirilen yolu gösterecek şekilde dinamik olarak güncellenir. Yayınlandığında, haritaya bir geçiş ara noktası eklenir (küçük beyaz bir işaretleyiciyle gösterilir). Bir yol segmentini seçip taşıdığınızda, rotanın söz konusu ayağı değişir. Bir ara nokta işaretçisi (başlangıç ve varış noktaları dahil) seçilip taşındığında, söz konusu ara noktadan geçen rotanın ayakları değişir.
Sürüklenebilir yol tarifleri istemci tarafında değiştirildiği ve istemci tarafında oluşturulduğu için kullanıcı görüntülenen yol tariflerini değiştirdiğinde bildirim almak üzere DirectionsRenderer
üzerindeki directions_changed
etkinliğini izleyip işleyebilirsiniz.
Aşağıdaki kodda, Avustralya'nın batı kıyısındaki Perth'ten doğu kıyısındaki Sidney'e yapılan bir seyahat gösterilmektedir. Kod, yolculuğun tüm ayaklarının toplam mesafesini güncellemek için directions_changed
etkinliğini izler.
TypeScript
function initMap(): void { const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 4, center: { lat: -24.345, lng: 134.46 }, // Australia. } ); const directionsService = new google.maps.DirectionsService(); const directionsRenderer = new google.maps.DirectionsRenderer({ draggable: true, map, panel: document.getElementById("panel") as HTMLElement, }); directionsRenderer.addListener("directions_changed", () => { const directions = directionsRenderer.getDirections(); if (directions) { computeTotalDistance(directions); } }); displayRoute( "Perth, WA", "Sydney, NSW", directionsService, directionsRenderer ); } function displayRoute( origin: string, destination: string, service: google.maps.DirectionsService, display: google.maps.DirectionsRenderer ) { service .route({ origin: origin, destination: destination, waypoints: [ { location: "Adelaide, SA" }, { location: "Broken Hill, NSW" }, ], travelMode: google.maps.TravelMode.DRIVING, avoidTolls: true, }) .then((result: google.maps.DirectionsResult) => { display.setDirections(result); }) .catch((e) => { alert("Could not display directions due to: " + e); }); } function computeTotalDistance(result: google.maps.DirectionsResult) { let total = 0; const myroute = result.routes[0]; if (!myroute) { return; } for (let i = 0; i < myroute.legs.length; i++) { total += myroute.legs[i]!.distance!.value; } total = total / 1000; (document.getElementById("total") as HTMLElement).innerHTML = total + " km"; } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
function initMap() { const map = new google.maps.Map(document.getElementById("map"), { zoom: 4, center: { lat: -24.345, lng: 134.46 }, // Australia. }); const directionsService = new google.maps.DirectionsService(); const directionsRenderer = new google.maps.DirectionsRenderer({ draggable: true, map, panel: document.getElementById("panel"), }); directionsRenderer.addListener("directions_changed", () => { const directions = directionsRenderer.getDirections(); if (directions) { computeTotalDistance(directions); } }); displayRoute( "Perth, WA", "Sydney, NSW", directionsService, directionsRenderer, ); } function displayRoute(origin, destination, service, display) { service .route({ origin: origin, destination: destination, waypoints: [ { location: "Adelaide, SA" }, { location: "Broken Hill, NSW" }, ], travelMode: google.maps.TravelMode.DRIVING, avoidTolls: true, }) .then((result) => { display.setDirections(result); }) .catch((e) => { alert("Could not display directions due to: " + e); }); } function computeTotalDistance(result) { let total = 0; const myroute = result.routes[0]; if (!myroute) { return; } for (let i = 0; i < myroute.legs.length; i++) { total += myroute.legs[i].distance.value; } total = total / 1000; document.getElementById("total").innerHTML = total + " km"; } window.initMap = initMap;