Yol Tarifi Hizmeti

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:

  1. Google Cloud Console'a gidin.
  2. Proje seç düğmesini tıklayın, ardından Maps JavaScript API için ayarladığınız projeyi seçin ve 'ı tıklayın.
  3. Gösterge Tablosu'ndaki API listesinde Directions API'yi bulun.
  4. API'yi listede görüyorsanız her şey yolunda demektir. API listede yoksa etkinleştirin:
    1. 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.
    2. Directions API'yi arayın ve sonuçlar listesinden seçin.
    3. 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 veya LatLng 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çıklanan origin 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ızca travelMode değerinin TRANSIT 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ızca travelMode değerinin DRIVING 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 konumunu LatLng, Yer nesnesi veya coğrafi kodlu olacak bir String 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ğlanan waypoints 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ıralanan waypoints 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ığında provideRouteAlternatives (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ığında avoidFerries (isteğe bağlı), hesaplanan rotaların mümkünse feribotlardan kaçınması gerektiğini gösterir.
  • true olarak ayarlandığında avoidHighways (isteğe bağlı), hesaplanan rotaların mümkünse ana otoyollardan kaçınması gerektiğini gösterir.
  • true değerine ayarlandığında avoidTolls (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 belirtilirse departureTime yok sayılır. departureTime veya arrivalTime 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 fazla TransitMode nesne değişmez değeri içeren bir dizidir. Bu alan yalnızca istek bir API anahtarı içeriyorsa eklenebilir. Her TransitMode, 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ğe departureTime ö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 istekte drivingOptions 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ıttaki duration_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 olarak bestguess değerine ayarlanır. Aşağıdaki değerlere izin verilir:
    • bestguess (varsayılan), döndürülen duration_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ülen duration_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ülen duration_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 bir DirectionsResult 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 fazla DirectionsWaypoint 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ğlanan DirectionsRequest 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:

  1. Bir DirectionsRenderer nesnesi oluşturun.
  2. İletilen haritaya bağlamak için oluşturucuda setMap() çağrısı yapın.
  3. Oluşturucuda setDirections() çağrısı yaparak yukarıda belirtildiği gibi DirectionsResult parametresini iletin. Oluşturucu bir MVCObject 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>

Örneği görüntüleyin

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>

Örneği görüntüleyin

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>

Örneği görüntüleyin

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 bir DirectionsGeocodedWaypoint nesne dizisi içerir.
  • routes[], DirectionsRoute nesne dizisi içeriyor. Her rota, kalkış noktasından DirectionsRequest belgesinde belirtilen hedefe nasıl ulaşacağınızı belirtir. Genellikle isteğin provideRouteAlternatives 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 bir address 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çin place_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 bir DirectionsLeg 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 bir DirectionsLeg 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 bir LatLng dizisi içerir.
  • overview_polyline, rotanın kodlanmış çoklu çizgi gösterimini barındıran tek bir points 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 bir LatLngBounds 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ğlanan DirectionsRenderer 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 bir DirectionsStep nesne dizisi içerir.
  • distance, bu bacağın katettiği toplam mesafeyi aşağıdaki biçimde bir Distance nesnesi olarak gösterir:

    • value, mesafeyi metre cinsinden gösterir
    • text, 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 bir UnitSystem ayarlayarak bu birim sistemini geçersiz kılabilirsiniz. Kullandığınız birim sisteminden bağımsız olarak distance.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 bir Duration 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ğerinin true olduğu ara noktaları içermez.
    • İstek özellikle arabayla yol tarifi için gönderildi. mode özelliği driving olarak ayarlandı.
    • departureTime, istekteki drivingOptions 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.
  • 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 bir Time nesnesi olarak döndürülür:
    • value JavaScript Date 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çin Time 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ın LatLng 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 hedefinin LatLng 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çin end_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 mesafeyi Distance nesnesi olarak içerir. (Yukarıdaki DirectionsLeg 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 kadar Duration nesnesi olarak içerir. (Yukarıdaki DirectionsLeg 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 kodlu LatLng kodunu içerir.
  • end_location, bu adımın bitiş noktasının LatLng değerini içeriyor.
  • polyline, adımın kodlanmış çoklu çizgi temsilini barındıran tek bir points 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 bir DirectionsStep 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ılan TravelMode 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 bir LatLngs 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 bir TransitStop nesnesi içerir:
    • name toplu taşıma istasyonunun/durağın adını girin. ör. "Taksim Meydanı".
    • location toplu taşıma istasyonunun/durağının konumunu LatLng olarak gösterir.
  • departure_stop, kalkış istasyonunu/durdurmayı temsil eden bir TransitStop nesnesi içeriyor.
  • arrival_time, üç özelliğe sahip bir Time nesnesi olarak belirtilen varış saatini içerir:
    • value JavaScript Date 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çeren TransitLine 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çeriyorsa num_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 bir TransitAgency 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 bir Vehicle 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>

Örneği görüntüleyin

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;
Örneği görüntüleyin

Örneği Deneyin