Yol Tarifi Hizmeti

Genel bakış

DirectionsService nesnesini kullanarak yol tariflerini hesaplayabilirsiniz (çeşitli ulaşım yöntemlerini kullanarak). Bu nesne, yol tarifi istekleri alan ve verimli bir yol döndüren Google Maps API Yol Tarifi Hizmeti ile iletişim kurar. Seyahat süresi, optimize edilen birincil faktördür, ancak mesafe, dönüş sayısı ve diğer birçok etmen göz önünde bulundurulabilir. Bu yol tarifi sonuçlarını kendiniz yönetebilir veya sonuçları oluşturmak için DirectionsRenderer nesnesini kullanabilirsiniz.

Yol tarifi isteğinde kaynağı veya hedefi belirtirken bir sorgu dizesi (ör. "Chicago, IL" veya "Darwin, NSW, Avustralya"), bir LatLng değeri ya da bir Place nesnesi belirtebilirsiniz.

Yol tarifi hizmeti, bir dizi ara nokta kullanarak çok parçalı yol tarifleri sağlayabilir. Yol tarifi, bir harita üzerinde rotayı çizen bir çoklu çizgi veya ek olarak, bir <div> öğesinde bir dizi metin açıklaması olarak görüntülenir (örneğin, "I Williamsburg Bridge rampasına sağa dönün").

Başlarken

Maps JavaScript API'de Directions hizmetini kullanmadan önce, Google Cloud Console'da Directions API'nin etkinleştirildiğinden emin olun. Bu işlem, Maps JavaScript API için belirlediğiniz projededir.

Etkin API'lerinizin listesini görüntülemek için:

  1. Google Cloud Console'a gidin.
  2. Proje seçin düğmesini tıklayın, ardından Maps JavaScript API için ayarladığınız projeyi seçin ve 'ı tıklayın.
  3. Kontrol Paneli'ndeki API listesinde Directions API'yi bulun.
  4. API'yi listede görüyorsanız her şey hazır demektir. API listelenmiyorsa etkinleştirin:
    1. Kitaplık sekmesini görmek için sayfanın üst kısmından API'Yİ ETKİNLEŞTİR'i seçin. Alternatif olarak, sol kısımdaki menüden Kitaplık'ı seçin.
    2. Directions API'yi arayın, ardından sonuç listesinden bu API'yi seçin.
    3. ETKİNLEŞTİR'i seçin. Süreç tamamlandığında, Kontrol Paneli'ndeki API'ler listesinde Directions API gösterilir.

Fiyatlandırma ve politikalar

Fiyatlandırma

16 Temmuz 2018'den itibaren 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'ye dair Kullanım ve Faturalandırma bölümüne bakın.

Politikalar

Directions hizmetinin kullanımı, Directions API'de 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 yapılır. Bu nedenle, istek tamamlandığında yürütme işleminin yürütülmesi için geri çağırma yöntemi iletmeniz gerekir. Bu geri çağırma yöntemi, sonuçları işlemelidir. Yol Tarifi hizmetinin, ayrı 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 için DirectionsService.route() çağrısı yapın. Yanıt alındığında, giriş terimlerinin ve yürütülecek bir geri çağırma yönteminin bulunduğu bir DirectionsRequest nesne değişmez değeri geçirir.

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 (zorunludur) yol tariflerinin hesaplanacağı başlangıç konumunu belirtir. Bu değer, bir String değeri (örneğin, "Chicago, IL"), LatLng değeri veya Place nesnesi olarak belirtilebilir. Yer nesnesi kullanıyorsanız bir yer kimliği, sorgu dizesi veya LatLng konumu belirtebilirsiniz. Maps JavaScript API'deki Yer Kodlama, Yer Arama ve Yer Otomatik Tamamlama hizmetlerinden yer kimliklerini alabilirsiniz. Otomatik Yer Tamamlama'daki yer kimliklerinin kullanıldığı bir örnek için Yer Otomatik Tamamlama ve Yol Tarifleri bölümüne bakın.
  • destination (zorunludur) yol tariflerinin hesaplanacağı son konumu belirtir. Seçenekler, yukarıda açıklanan origin alanıyla aynıdır.
  • travelMode (zorunludur) yol tariflerini hesaplarken kullanılacak ulaşım şeklini belirtir. Geçerli değerler aşağıdaki Seyahat Modları'nda belirtilmiştir.
  • transitOptions (isteğe bağlı), yalnızca travelMode öğesinin TRANSIT olduğu istekler için geçerli olan değerleri belirtir. Geçerli değerler aşağıdaki Toplu Taşıma Seçenekleri'nde açıklanmıştır.
  • drivingOptions (isteğe bağlı), yalnızca travelMode öğesinin 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österirken kullanılacak birim sistemini belirtir. Geçerli değerler aşağıdaki Birim Sistemleri bölümünde belirtilmiştir.

  • waypoints[] (isteğe bağlı), DirectionsWaypoints dizisini belirtir. Referans noktaları, belirtilen konumlar üzerinden değiştirerek rotayı değiştirir. Ara nokta, aşağıda gösterilen alanlarla bir nesne değişmez değeri olarak belirtilir:

    • location, ara noktanın konumunu LatLng olarak bir Yer nesnesi olarak veya coğrafi kodlama yapılacak bir String olarak belirtir.
    • stopover, ara noktanın rota üzerindeki bir durak olduğunu belirten bir boole değeridir. Yol noktası, rotayı iki yola böler.

    (Referans noktaları hakkında daha fazla bilgi için aşağıdaki Rotalarda ara nokta kullanma bölümünü inceleyin.)

  • optimizeWaypoints (isteğe bağlı), sağlanan waypoints özelliğini kullanan rotanın, ara noktaları daha verimli bir sırada yeniden düzenleyerek optimize edilebileceğini belirtir. true ise Yol tarifi hizmeti, yeniden sıralanmış waypoints alanını bir waypoint_order alanında döndürür.(Daha fazla bilgi edinmek için aşağıdaki Rotalarda Referans Noktaları Kullanma konusuna bakın.)
  • provideRouteAlternatives (isteğe bağlı), true olarak ayarlandığında Yol Tarifi hizmetinin, yanıtta birden fazla rota alternatifi sağlayabileceğini belirtir. Rota alternatifleri sağlamanın sunucudan gelen yanıt süresini artırabileceğini unutmayın. Bu özellik, yalnızca ara noktaları olmayan istekler için kullanılabilir.
  • avoidFerries (isteğe bağlı), true olarak ayarlandığında, hesaplanan rotaların mümkünse feribotlardan kaçınılması gerektiğini belirtir.
  • avoidHighways (isteğe bağlı), true olarak ayarlandığında, hesaplanan rotaların mümkünse büyük otoyollardan kaçınması gerektiğini belirtir.
  • avoidTolls (isteğe bağlı), true olarak ayarlandığında, hesaplanan rotaların mümkünse ücretli yollardan kaçınılması gerektiğini belirtir.
  • 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 konusuna bakın.)

Aşağıda bir DirectionsRequest örneği 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 Yöntemleri

Yol tariflerini hesaplarken hangi ulaşım modunu kullanacağınızı belirtmeniz gerekir. Aşağıdaki ulaşım modları şu anda desteklenmektedir:

  • DRIVING (Varsayılan), yol ağını kullanan standart arabayla yol tariflerini gösterir.
  • BICYCLING, bisiklet yolları ve tercih edilen sokaklar üzerinden bisiklet için yol tarifi istiyor.
  • TRANSIT, toplu taşıma rotaları aracılığıyla yol tarifi istiyor.
  • WALKING, yaya yolları ve kaldırımlar üzerinden yaya yol tarifi ister.

Bir ülkenin yol tariflerini ne ölçüde desteklediğini belirlemek için Google Haritalar Platformu Kapsam Ayrıntılarına bakın. Söz konusu yol türünün kullanılamadığı bir bölge için yol tarifi isterseniz yanıt DirectionsStatus="ZERO_RESULTS" değerini döndürür.

Not: Yürüyerek yol tarifleri, net bir şekilde yaya yolları içeremez. Bu nedenle, varsayılan DirectionsRenderer kullanmıyorsanız yaya yol tarifi, DirectionsResult içinde Uyarlama uyarıları gösterir.

Toplu Taşıma Seçenekleri

Yol tarifi isteği için kullanılabilen seçenekler, ulaşım şekillerine göre değişir. Toplu taşıma yol tarifi istenirken avoidHighways, avoidTolls, waypoints[] ve optimizeWaypoints seçenekleri yok sayılır. Toplu taşımaya özel yönlendirme seçeneklerini, TransitOptions nesne değişmez değeri aracılığıyla belirtebilirsiniz.

Toplu taşıma yol tarifleri zamana duyarlıdır. Yol tarifi yalnızca gelecekteki zamanlarda döndürülür.

TransitOptions nesne 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 istediğiniz varış zamanını belirtir. Varış saati belirtilirse kalkış saati yok sayılır.
  • departureTime (isteğe bağlı), kalkış zamanı olarak Date nesnesini belirtir. arrivalTime belirtilirse departureTime yoksayılır. departureTime veya arrivalTime için herhangi bir değer belirtilmemişse varsayılan değer şimdi (yani geçerli saat) olur.
  • modes[] (isteğe bağlı), bir veya daha fazla TransitMode nesne değişmez değeri içeren bir dizidir. Bu alan yalnızca istekte API anahtarı varsa eklenebilir. Her TransitMode, tercih edilen bir toplu taşıma modunu belirtir. Aşağıdaki değerlere izin verilir:
    • BUS, hesaplanan rotanın otobüsle seyahat etmeyi tercih ettiğini gösterir.
    • RAIL, hesaplanan rotanın tren, tramvay, hafif raylı sistem ve metro yoluyla seyahati tercih etmesi gerektiğini belirtir.
    • SUBWAY, hesaplanan rotanın metroyla seyahat etmeyi tercih ettiğini belirtir.
    • TRAIN, hesaplanan rotanın trenle seyahat etmeyi tercih ettiğini gösterir.
    • TRAM, hesaplanan rotanın tramvay ve hafif raylı ulaşımı tercih ettiğini gösterir.
  • routingPreference (isteğe bağlı), toplu taşıma rotası tercihlerini 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 isteğin bir API anahtarı içermesi durumunda 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ı miktarda yürüyüş tercih etmesi gerektiğini gösterir.

Toplu taşımayla DirectionsRequest örneği aşağıda gösterilmiştir:

{
  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

Arabayla yol tarifi için DrivingOptions nesnesi aracılığıyla yönlendirme seçenekleri 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 istediğiniz kalkış saatini belirtir. Değer mevcut saate veya gelecekteki bir zamana ayarlanmalıdır. Geçmiş bir tarih seçilemez. (API, saat dilimleri arasında tutarlı bir 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 eklerseniz API, o sırada beklenen trafik koşullarına göre en iyi rotayı döndürür ve yanıtta trafikte tahmin edilen süreyi (duration_in_traffic) içerir. Kalkış saati belirtmezseniz (yani, istek drivingOptions içermiyorsa) döndürülen rota, trafik koşullarını dikkate almadan genellikle iyi bir rotadır.
  • trafficModel (isteğe bağlı), trafikteki zamanı hesaplarken kullanılacak varsayımları belirtir. Bu ayar, geçmiş ortalamalara göre trafikte tahmin edilen süreyi içeren, yanıttaki duration_in_traffic alanında döndürülen değeri etkiler. Varsayılan olarak bestguess değerine ayarlanır. Aşağıdaki değerlere izin verilir:
    • bestguess (varsayılan), hem geçmiş trafik koşulları hem de canlı trafik ile ilgili bilinen bir bilgi ışığında, döndürülen duration_in_traffic değerinin seyahat süresi için en iyi tahmin olması gerektiğini belirtir. Şu anda departureTime civarında olan canlı trafik daha da önemli hale geliyor.
    • pessimistic, döndürülen duration_in_traffic değerinin çoğu gündeki gerçek seyahat süresinden uzun olması gerektiğini belirtir. Ancak zaman zaman, özellikle kötü trafik koşullarına sahip olan günler bu değeri aşabilir.
    • optimistic, döndürülen duration_in_traffic değerinin çoğu gündeki gerçek seyahat süresinden daha kısa olduğunu gösterir. Ancak zaman zaman, özellikle iyi trafik koşullarına sahip olan günler, bu değerden daha hızlı olabilir.

Aşağıda, arabayla yol tarifleri için örnek bir DirectionsRequest görebilirsiniz:

{
  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 kalkış noktasının bulunduğu ülkenin veya bölgenin birim sistemi kullanılarak hesaplanır ve gösterilir. (Not: Kaynaklar, adresler yerine her zaman varsayılan metrik birimi olan enlem/boylam koordinatları kullanılarak ifade edilir.) Örneğin, "Chicago, IL"den "Toronto, ONT"ya giden bir rotada sonuçlar mil cinsinden, ters rota ise kilometre olarak gösterilir. Aşağıdaki UnitSystem değerlerinden birini kullanarak istek içinde açıkça bir birim ayarlayarak bu birim sistemini geçersiz kılabilirsiniz:

  • UnitSystem.METRIC, metrik sistemin kullanımını belirtir. Mesafe, kilometre cinsinden gösterilir.
  • UnitSystem.IMPERIAL, İmparatorluk (İngilizce) sisteminin kullanımını belirtir. Mesafe, mil kullanılarak gösterilir.

Not: Bu birim sistem ayarı yalnızca kullanıcıya gösterilen metni etkiler. Yol tarifi sonucunda, her zaman metre cinsinden ifade edilen mesafe değerleri de kullanıcılara gösterilmez.

Yol Tarifi için Bölge Ağırlıklı

Google Maps API Yol Tarifi Hizmeti, JavaScript önyüklemesini yüklediğiniz alan (bölge veya ülke) tarafından etkilenen adres sonuçlarını döndürür. (Çoğu kullanıcı https://maps.googleapis.com/ yüklediği için bu ABD için dolaylı bir alan belirler.) Önyüklemeyi desteklenen farklı bir alandan yüklerseniz söz konusu alandan etkilenen sonuçlar alırsınız. Örneğin, "İstanbul" için yapılan aramalar, https://maps.googleapis.com/ (ABD) uygulamasını yükleyen uygulamalardan (İspanya) http://maps.google.es/ dilinden farklı sonuçlar döndürebilir.

Yol Tarifi hizmetini, region parametresini kullanarak belirli bir bölgeye ağırlık verilmiş sonuçlar döndürecek şekilde de ayarlayabilirsiniz. Bu parametre, iki karakterli (sayısal olmayan) 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 karakterlik değerlerle doğrudan ccTLD'ler ("üst düzey alan") eşlenir. Bazı durumlarda region etiketi, bazen ccTLD değerlerinden farklı olan ISO-3166-1 kodlarını da (örneğin, "İngiltere" için GB) 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 yol açabilir.
  • Yalnızca iki karakterlik bölge alt etiketleri (Unicode CLDR biçimi) kullanın. Tüm diğer girişler hataya neden olur.

Bölgeye ağırlık verme, yalnızca yol tarifini destekleyen ülkeler ve bölgelerde desteklenir. Directions API'nin uluslararası kapsamını görmek için Google Haritalar Platformu Kapsam Ayrıntıları'na bakın.

Oluşturma Talimatları

route() yöntemiyle DirectionsService için bir yol tarifi isteği başlatmak, hizmet isteğinin tamamlanmasının ardından yürütülen 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 kaynağı, hedefi veya ara noktalarında belirtilen konumlardan en az birinin coğrafi kodlamanın yapılamadığını belirtir.
  • ZERO_RESULTS, başlangıç noktası ile hedef arasında rota bulunamadığını gösterir.
  • MAX_WAYPOINTS_EXCEEDED, DirectionsRequest içinde çok fazla DirectionsWaypoint alanı sağlandığını gösterir. Yol noktası sınırları ile 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 oluşur. Ara nokta, dönüş veya talimat sayısını azaltmayı deneyin.
  • INVALID_REQUEST, sağlanan DirectionsRequest değerinin geçersiz olduğunu gösterir. Bu hata kodunun en yaygın nedenleri, kaynağı veya hedefi eksik istekler ya da ara nokta içeren bir toplu taşıma isteğidir.
  • OVER_QUERY_LIMIT, web sayfasının izin verilen süre 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, yol tarifi isteğinin sunucu hatası nedeniyle işlenemediğini gösteriyor. Tekrar denemeniz durumunda istek başarılı olabilir.

Yol tarifi sorgusunun sonucu işlemeden önce bu değeri kontrol ederek geçerli sonuçlar döndürdüğünden emin olmalısınız.

Yol Tarifi Sonucunu Görüntüleme

DirectionsResult, yol tarifi sorgusunun sonucunu içerir. Bu, kendiniz işleyebilir veya sonucu bir harita üzerinde otomatik olarak görüntüleyen DirectionsRenderer nesnesine iletebilirsiniz.

DirectionsRenderer kullanarak DirectionsResult göstermek için aşağıdakileri yapmanız gerekir:

  1. DirectionsRenderer nesnesi oluşturun.
  2. Oluşturucuyu iletilen haritaya bağlamak için oluşturucuda setMap() çağrısı yapın.
  3. Oluşturucuda setDirections() öğesini yukarıda belirtildiği gibi DirectionsResult ileterek çağırın. Oluşturucu bir MVCObject olduğundan, özelliklerinde yapılan değişiklikleri otomatik olarak algılar ve ilişkili yol tarifleri değiştiğinde haritayı günceller.

Aşağıdaki örnekte, Route 66'daki iki konum arasındaki yol tarifleri hesaplanmıştır. Kaynak ve hedef, açılır listelerdeki belirli "start" ve "end" değerleri tarafından belirlenir. DirectionsRenderer, çoklu çizginin belirtilen konumlar arasındaki görünümünü ve kaynak, hedef ve herhangi bir ara noktadaki işaretçilerin 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övdesi:

<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öster

Aşağıdaki örnekte, Haight-Ashbury ile San Francisco, CA'daki Ocean Beach arasında farklı ulaşım şekilleriyle yol tarifi 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övdesi:

<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öster

DirectionsRenderer, hem çoklu çizginin hem de ilişkili işaretçilerin görüntüsünü yönetmekle kalmaz, aynı zamanda bir dizi adım halinde yol tariflerinin metin görünümünü de kullanabilir. Bunu yapmak için DirectionsRenderer cihazınızda setPanel() numarasını arayarak bu bilgiyi göstereceğiniz <div> bilgisini aktarın. Bunu yapmak, uygun telif hakkı bilgilerini ve sonuçla ilişkili olabilecek uyarıları göstermenizi de sağlar.

Metin talimatları, tarayıcının tercih edilen dil ayarı kullanılarak veya language parametresi kullanılarak API JavaScript'i yüklenirken belirtilen dil sağlanır. (Daha fazla bilgi için Yerelleştirme bölümünü inceleyin.) Toplu taşıma yol tarifleri söz konusu olduğunda, saat bu toplu taşıma durağındaki saat diliminde görüntülenir.

Aşağıdaki örnek, yukarıda gösterilenle aynıdır, ancak yol tariflerinin gösterileceğ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övdesi:

<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öster

DirectionsResult Nesnesi

DirectionsService için yol tarifi isteği gönderdiğinizde durum kodundan ve sonucunda 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[], DirectionsGeocodedWaypoint nesne dizisi içerir. Bu nesnelerin her biri, başlangıç noktası, hedef ve ara noktaların coğrafi kodlamasıyla ilgili ayrıntıları içerir.
  • routes[], DirectionsRoute nesne dizisi içeriyor. Her rota, kalkış noktasından DirectionsRequest bölgesinde sağlanan hedefe giden yolu belirtir. İsteğin provideRouteAlternatives alanı true olarak ayarlanmadığı sürece genellikle herhangi bir istek için yalnızca bir rota döndürülür. Bu durumda birden fazla rota döndürülebilir.

Not: via_waypoint özelliği, alternatif rotalarda kullanımdan kaldırılır. Sürüm 3.27, API'nin alternatif rotalardaki ara noktalarla ilave edilen son sürümüdür. API'nin 3.28 ve sonraki sürümlerinde, yol tarifleri hizmetini kullanarak alternatif rotaların sürüklenmesini devre dışı bırakarak sürüklenebilir yol tariflerini uygulamaya devam edebilirsiniz. Yalnızca ana rota sürüklenebilir olmalıdır. Kullanıcılar ana rotayı alternatif bir rotayla eşleşene kadar sürükleyebilir.

Yol Tarifi Coğrafi Kodlu Referans Noktaları

DirectionsGeocodedWaypoint, kaynak, hedef ve ara noktaların coğrafi kodlamasıyla ilgili 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 belirtir. Bu alan aşağıdaki değerleri içerebilir.
    • "OK", herhangi bir hata olmadığını belirtir. Adres başarıyla ayrıştırıldı ve en az bir coğrafi kod döndürüldü.
    • "ZERO_RESULTS", coğrafi kodlamanın başarılı olduğunu ancak hiçbir sonuç döndürmediğini belirtir. Bu durum, coğrafi kodlayıcının var olmayan address öğesi iletilmiş olması durumunda oluşabilir.
  • partial_match, coğrafi kodlama sahibinin orijinal istek için tam eşleşme döndürmediğini ancak istenen adresin bir kısmıyla eşleşebildiğini belirtir. Yazım yanlışları ve/veya eksik adres için ilk isteği inceleyebilirsiniz.

    Kısmi eşleşmeler çoğunlukla, talebi ilettiğiniz konum içinde bulunmayan açık adresler için gerçekleşir. Bir istek, aynı yerleşimdeki iki veya daha fazla konumla eşleştiğinde de kısmi eşleşmeler döndürülebilir. Örneğin, "Hillpar St, Bristol, İngiltere" hem Henry Street hem de Henrietta Street için kısmi bir eşleşme döndürür. Bir istek yanlış yazılan 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_idbir yerin benzersiz tanımlayıcısıdır ve diğer Google API'leriyle kullanılabilir. Örneğin, place_id numarasıyla yerel bir işletmenin telefon numarası, çalışma saatleri, kullanıcı yorumları gibi bilgilerini elde etmek için Google Places API kitaplığını 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 özelliğin türünü belirleyen sıfır veya daha fazla etiket kümesi içerir. Örneğin, "Ankara"nın coğrafi kodu, "Ankara"nın bir şehir olduğunu belirten "bölge" ve aynı zamanda bir siyasi tüzel kişi olduğunu belirten "siyasi" değerini döndürür.

Yol Tarifi Rotaları

Not: Eski DirectionsTrip nesnesi DirectionsRoute olarak yeniden adlandırıldı. Güzergah, artık yalnızca ana seyahatin bir bacak kısmından ziyade baştan sona kadar geçen yolculuğun tamamına atıfta bulunmaktadır.

DirectionsRoute öğesi, belirtilen başlangıç noktası ve hedeften tek bir sonuç içerir. Ara noktanın belirtildiğine bağlı olarak bu rota bir DirectionsLeg veya daha fazla bacaktan oluşabilir. Ayrıca, rotada yol tariflerine ek olarak kullanıcıya gösterilmesi gereken telif hakkı ve uyarı bilgileri de rota üzerinde yer almaktadır.

DirectionsRoute, aşağıdaki alanları içeren bir nesne değişmez değeridir:

  • legs[], her biri belirli bir rotadaki iki konumdan gelen rotanın bir ayağı hakkında bilgi içeren bir DirectionsLeg nesnesi dizisi içerir. Belirtilen her bir ara nokta veya hedef için ayrı bir bacak olacaktır. (Ara nokta içermeyen bir rota tam olarak bir DirectionsLeg içerir.) Her bacak, bir dizi DirectionStepden oluşur.
  • waypoint_order, hesaplanan rotadaki tüm ara noktaların sırasını belirten bir dizi içerir. Bu dizi, DirectionsRequest öğesini optimizeWaypoints: true geçirirse değiştirilmiş bir sipariş içerebilir.
  • overview_path, elde edilen yol tariflerinin yaklaşık (basitleştirilmiş) yolunu temsil eden bir LatLng dizisi içerir.
  • overview_polyline, rotanın kodlanmış çoklu çizgisini temsil eden tek bir points nesnesi içerir. Bu çoklu çizgi, elde edilen yol tariflerinin yaklaşık (yumuşatılmış) yoludur.
  • bounds, bu rota üzerinde çoklu çizginin sınırlarını belirten bir LatLngBounds içerir.
  • copyrights, bu rota için gösterilecek telif hakkı metnini içerir.
  • warnings[], bu yol tarifleri gösterilirken gösterilecek bir dizi uyarı içeriyor. Sağlanan DirectionsRenderer nesnesini kullanmazsanız bu uyarıları kendiniz yönetmeniz ve görüntülemeniz gerekir.
  • fare, bu rotadaki toplam ücreti (toplam bilet maliyetleri) içerir. Bu özellik yalnızca toplu taşıma istekleri ve tüm toplu taşıma ayakları için ücret bilgilerinin sunulduğu rotalarda döndürülür. Bu bilgiler şunları içerir:
    • currency: Tutarın ifade edildiği para birimini belirten bir ISO 4217 para birimi kodu.
    • value: Yukarıda belirtilen para biriminde toplam ücret tutarı.

Yol Tarifi Bacakları

Not: Eski DirectionsRoute nesnesi DirectionsLeg olarak yeniden adlandırıldı.

DirectionsLeg, hesaplanan rotadaki başlangıç noktasından hedefe giden yolculuğun tek bir bacak kısmını tanımlar. Ara nokta içermeyen rotalar, tek bir "bacaktan" oluşur ancak bir veya daha fazla ara nokta tanımlayan rotalar, yolculuğun belirli bacaklarına karşılık gelen bir veya daha fazla bacaktan 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 gösteren bir DirectionsStep nesnesi dizisi içerir.
  • distance, aşağıdaki formun Distance nesnesi olarak bu bacağın kapladığı toplam mesafeyi belirtir:

    • value, mesafeyi metre cinsinden belirtir
    • text, mesafenin bir dize temsilini içerir. Varsayılan olarak, kaynakta kullanılan birimler birimde gösterilir. (Örneğin, miller ABD'deki herhangi bir kaynak için kullanılacaktır.) Orijinal sorguda özellikle bir UnitSystem ayarlayarak bu birim sistemini geçersiz kılabilirsiniz. Hangi birim sistemini kullandığınızdan 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ımlanmamış olabilir.

  • duration, bu bağın toplam süresini aşağıdaki biçimdeki Duration nesnesi olarak belirtir:

    • value, saniye cinsinden süreyi belirtir.
    • text, sürenin dize gösterimini içerir.

    Süre bilinmiyorsa bu alanlar tanımlanmamış olabilir.

  • duration_in_traffic, geçerli trafik koşulları dikkate alınarak bu bağın toplam süresini belirtir. duration_in_traffic yalnızca aşağıdakilerin tümü doğruysa döndürülür:

    • İstek, duraklama ara noktalarını içermiyor. Diğer bir deyişle, stopover özelliğinin true olduğu ara noktaları içermez.
    • İstek özellikle arabayla yol tarifi için verilmektedir. mode, driving olarak ayarlanmıştır.
    • departureTime, isteğe drivingOptions alanının bir parçası olarak eklenir.
    • İstenen rota için trafik koşulları mevcut.

    duration_in_traffic aşağıdaki alanları içerir:

    • value saniye cinsinden süreyi gösterir.
    • text, sürenin kullanıcılar tarafından okunabilen bir temsilini içerir.
  • arrival_time, bu bacak için tahmini varış zamanını içerir. Bu mülk yalnızca toplu taşıma yol tarifleri için iade edilir. Sonuç, üç özellik içeren bir Time nesnesi olarak döndürülür:
    • value, JavaScript Date nesnesi olarak belirtilir.
    • text, dize olarak belirtilir. Saat, toplu taşıma durağının saat diliminde gösterilir.
    • time_zone, bu istasyonun saat dilimini içeriyor. Değer, IANA Saat Dilimi Veritabanı'nda (ör. "Amerika/New_York") tanımlandığı şekilde saat diliminin adıdır.
  • departure_time, Time nesne olarak belirtilen bu bacak için tahmini kalkış saatini içerir. departure_time yalnızca toplu taşıma yol tarifleri için kullanılabilir.
  • start_location, bu bağın başlangıç noktasının LatLng değerini içerir. Directions Web Service, başlangıç ve bitiş noktalarında en yakın ulaşım seçeneğini (genellikle yol) kullanarak konumlar arasındaki yol tariflerini hesaplar. Bu nedenle, örneğin bir yol başlangıç noktasına yakın değilse, start_location bu bacağın kalkış noktasından farklı olabilir.
  • end_location, bu bacağın hedefinin LatLng değerini içerir. DirectionsService, başlangıç ve bitiş noktalarında en yakın ulaşım seçeneğini (genellikle yol) kullanarak konumlar arasındaki yol tariflerini hesapladığı için, end_location bir yerin hedefe yakın olmaması durumunda bu bacak için belirtilen hedeften farklı olabilir.
  • start_address, bu bacağın başlangıcında okunabilir bir adresi (genellikle açık adres) içerir.

    Bu içerik, olduğu gibi okunmalıdır. Biçimlendirilmiş adresi programatik olarak ayrıştırmayın.
  • end_address, bu bağın ucunun kullanıcılar tarafından okunabilir adresini (genellikle açık adresi) içerir.

    Bu içerik, olduğu gibi okunmalıdır. Biçimlendirilmiş adresi programatik olarak ayrıştırmayın.

Yol Tarifi Adımları

DirectionsStep, yol tarifindeki en atomik birimdir ve yolculuktaki belirli bir talimatı açıklayan tek bir adıma sahiptir. Ör. "K. 4. Cadde Bu adım, yalnızca talimatı açıklamakla kalmaz, aynı zamanda bu adımın bir sonraki adımla ilişkisiyle ilgili mesafe ve süre bilgilerini de içerir. Örneğin, "I-80 West ile birleştirme" olarak belirtilen bir adım, "37 mil" ve "40 dakika" sürelerini içerebilir. 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ım dizisinde transit nesnesi biçiminde ek Toplu Taşımaya Özel Bilgiler bulunur. Yol tarifleri birden fazla ulaşım modu içeriyorsa steps[] dizisinde yaya veya araçlı yol tarifleri için ayrıntılı yol tarifleri sunulur. Örneğin, bir yürüyüş adımı başlangıç ve bitiş yerlerinden yol tariflerini içerir: "Walk in Innes Ave & Fitch St." Bu adım, steps[] dizisindeki söz konusu rota için ayrıntılı yaya yol tarifi içerir. Örneğin, "Kuzey batıya doğru git", "Arelious Walker'a sola dön" ve "Innes Bulvarı'na sola dön" gibi.

DirectionsStep, aşağıdaki alanları içeren bir nesne değişmez değeridir:

  • instructions, bu adım için bir metin dizesinde talimatlar içerir.
  • distance, bir sonraki adıma kadar bu adımın kapsadığı mesafeyi Distance nesnesi olarak içerir. (Yukarıdaki DirectionsLeg bölümünde açıklanan açıklamaya bakın.) Mesafe bilinmiyorsa bu alan tanımlanmamış olabilir.
  • duration, bir sonraki adım olan adımın gerçekleştirilmesi için gereken süreyi Duration nesnesi olarak tahmin eder. (Yukarıdaki DirectionsLeg bölümünde açıklanan açıklamaya bakın.) Süre bilinmiyorsa bu alan tanımlanmamış olabilir.
  • start_location, bu adımın başlangıç noktasının coğrafi kodlamalı LatLng değerini içerir.
  • end_location, bu adımın bitiş noktasının LatLng değerini içerir.
  • polyline, adımın kodlanmış çoklu çizgiyi temsil eden tek bir points nesnesi içerir. Bu çoklu çizgi, adımın yaklaşık (yumuşatılmış) yoludur.
  • steps[], toplu taşıma yol tariflerindeki yaya veya arabayla yol tariflerinin ayrıntılı yol tariflerini 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 öğesini içerir. Toplu taşıma yol tarifleri, yaya ve toplu taşıma yol tariflerinin bir kombinasyonunu içerebilir.
  • path, bu adımın ilerleyişini açıklayan bir LatLngs dizisi içeriyor.
  • transit, varış ve kalkış saatleri ile toplu taşıma hattının adı gibi toplu taşımayla ilgili bilgileri içerir.

Toplu Taşımayla İlgili Özel Bilgiler

Toplu taşıma yol tarifleri, diğer ulaşım modlarıyla alakalı olmayan ek bilgiler döndürür. Bu ek özellikler, DirectionsStep özelliği olarak döndürülen TransitDetails nesnesi aracılığıyla açığa çıkarı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 veya durağı aşağıdaki özelliklere sahip bir TransitStop nesnesiyle temsil eder:
    • name toplu taşıma durağının/durağının adını girin. ör. "Meydan".
    • location, toplu taşıma durağının veya durağının konumunu LatLng olarak temsil eder.
  • departure_stop, kalkış istasyonunu/durağını temsil eden bir TransitStop nesnesi içeriyor.
  • arrival_time, üç özellik içeren bir Time nesnesi olarak belirtilen varış zamanını içerir:
    • value, JavaScript Date nesnesi olarak belirtilir.
    • text, dize olarak belirtilir. Saat, toplu taşıma durağının saat diliminde gösterilir.
    • time_zone, bu istasyonun saat dilimini içeriyor. Değer, IANA Saat Dilimi Veritabanı'nda (ör. "Amerika/New_York") tanımlandığı şekilde saat diliminin adıdır.
  • departure_time, Time nesnesi olarak belirtilen kalkış saatini içerir.
  • headsign, araçta veya kalkış noktasında duraklandığı gibi, bu hat üzerinde hangi yönde seyahat edileceğini belirtir. Bu, çoğunlukla terminal istasyonudur.
  • headway kullanılabilir olduğunda, şu anda aynı duraktan kalkışlar arasında beklenen saniye sayısını belirtir. Örneğin, headway değeri 600 olduğunda otobüsünüzü kaçırmanız durumunda on dakika beklemeniz gerekir.
  • line, bu adımda kullanılan toplu taşıma hattı hakkında bilgiler içeren bir TransitLine nesne değişmez değeri içerir. TransitLine, TransitLine referans dokümanlarında açıklanan diğer özelliklerle birlikte satırın adını ve operatörünü sağlar.
  • num_stops bu adımdaki durak sayısını içerir. Varış noktası dahil ancak kalkış noktası dahil değildir. Örneğin, yol tariflerinin A Durağından çıkması, B ve C duraklarından geçmesi ve D durağına varması durumunda num_stops 3 sonucunu döndürür.

Transit Hat

TransitLine nesnesi şu özellikleri gösterir:

  • name, bu toplu taşıma hattının tam adını içerir. Örneğin "7 Avenue Express" veya "14th St Crosstown".
  • short_name bu toplu taşıma hattının kısa adını içeriyor. Bu genellikle "2" veya "M14" gibi bir satır numarası olur.
  • 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, toplu taşıma şirketinin adını içeriyor.
    • phone, toplu taşıma şirketinin telefon numarasını içerir.
    • url, toplu taşıma şirketinin URL'sini içeriyor.

    Not: DirectionsRenderer nesnesini kullanmak yerine toplu taşıma yol tariflerini manuel olarak oluşturuyorsanız yolculuk sonuçlarına hizmet veren toplu taşıma acentelerinin adlarını ve URL'lerini göstermeniz gerekir.

  • url, transit operatörü tarafından sağlanan bu toplu taşıma hattı için bir URL içeriyor.
  • icon bu satırla ilişkilendirilmiş simge için bir URL içeriyor. Çoğu şehirde, araç türüne göre farklılık gösteren genel simgeler kullanılır. New York metro sistemi gibi bazı toplu taşıma hatları, bu çizgiye özgü simgelere sahiptir.
  • color, bu toplu taşıma işaretinde yaygın olarak kullanılan rengi içerir. Renk, #FF0033 gibi bir on altılık dize olarak belirtilir.
  • text_color, bu çizginin işareti için 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çerir:
    • name bu satırdaki aracın adını içeriyor. ör. "Metro."
    • type bu satırda kullanılan aracın türünü içeriyor. Desteklenen değerlerin tam listesi için Araç Türü dokümanlarına bakın.
    • icon, bu araç türüyle yaygın olarak ilişkili simgenin URL'sini içerir.
    • local_icon, yerel toplu taşıma tabelasına göre bu araç türüyle ilişkilendirilmiş simgenin URL'sini içerir.

Araç Türü

VehicleType nesnesi aşağıdaki özellikleri gösterir:

Değer Tanım
VehicleType.RAIL Demiryolu.
VehicleType.METRO_RAIL Hafif raylı sistem.
VehicleType.SUBWAY Yer altı hafif raylı taşıt.
VehicleType.TRAM Yer karayolu ışıklandırmasının üzerinde.
VehicleType.MONORAIL Monoray.
VehicleType.HEAVY_RAIL Demiryolu.
VehicleType.COMMUTER_TRAIN Banliyö treni.
VehicleType.HIGH_SPEED_TRAIN Hızlı tren.
VehicleType.BUS Otobüs
VehicleType.INTERCITY_BUS Şehirlerarası otobüs
VehicleType.TROLLEYBUS Troleybüs.
VehicleType.SHARE_TAXI Taksi paylaşma, rotadan herhangi bir yerde yolcu bırakma ve yolcuları alma olanağı bulunan bir otobüs türüdür.
VehicleType.FERRY Feribot.
VehicleType.CABLE_CAR Genellikle yerde bulunan bir kablo üzerinde çalışan araç. Havadan teleferikler VehicleType.GONDOLA_LIFT türünde olabilir.
VehicleType.GONDOLA_LIFT Hava teleferiği.
VehicleType.FUNICULAR Kablo kullanılarak dik bir yokuşta duran bir araç. Füniküler genellikle iki arabadan oluşur ve her araba, diğerine karşı ağırlık verir.
VehicleType.OTHER Diğer tüm araçlar bu türü döndürür.

Yol Tarifi Sonuçlarını İnceleme

Yol tarifi yanıtını ayrıştırmak için DirectionsResults bileşenleri (DirectionsRoute, DirectionsLeg, DirectionsStep ve TransitDetails) incelenebilir ve kullanılabilir.

Önemli: Toplu taşıma yol tariflerini DirectionsRenderer nesnesi yerine manuel olarak oluşturuyorsanız yolculuk 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 yerlere yaya yol tarifleri verilmektedir. Her adım için işaretçiler eklemek üzere rotanın DirectionsStep öğesini inceleriz ve bir InfoWindow öğesine bu adım için talimat metni ekleyerek bilgi ekleriz.

Not: Yürümeyle ilgili yol tariflerini hesapladığımızdan, kullanıcılara ayrı bir <div> panelinde uyarılar da 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övdesi:

<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öster

Güzergahlarda Referans Noktaları Kullanma

DirectionsRequest'te belirtildiği gibi, yaya, bisiklet veya arabayla yol tarifleri için Yol tarifi hizmetini kullanarak rotaları hesaplarken yol noktalarını (DirectionsWaypoint türünde) de belirtebilirsiniz. Toplu taşıma yol tarifleri için ara noktalar kullanılamaz. Referans noktaları, ek konumlar üzerinden rotaları hesaplamanıza olanak tanır. Bu durumda, döndürülen rota belirtilen bağlantı noktalarından geçer.

waypoint aşağıdaki alanlardan oluşur:

  • location (zorunlu) Ara noktanın adresini belirtir.
  • stopover (isteğe bağlı), bu ara noktanın rotadaki gerçek bir durak mı (true) yoksa yalnızca belirtilen konum (false) üzerinden rota oluşturmayı mı tercih ettiğini belirtir. Duraklamalar varsayılan olarak true şeklindedir.

Varsayılan olarak, Yol Tarifi hizmeti, verilen ara noktalar üzerinden bir rotayı belirli bir sırayla hesaplar. İsteğe bağlı olarak, yol tariflerini daha verimli bir sırada yeniden düzenleyerek Yol Tarifi hizmetinin sağlanan rotayı optimize etmesine izin vermek için optimizeWaypoints: true içinde DirectionsRequest iletebilirsiniz. (Bu optimizasyon, seyahat eden satış görevlisi sorununun uygulanmasıdır.) Seyahat süresi, optimize edilen birincil faktördür, ancak hangi rotanın en verimli olduğuna karar verirken mesafe, dönüş sayısı ve diğer birçok faktör dikkate alınabilir. Yol tarifi hizmetinin, rotasını optimize etmesi için tüm ara noktalar mola noktası olmalıdır.

Yol tarifi hizmetine, ara noktaların sırasını optimize etme talimatı verirseniz DirectionsResult nesnesindeki waypoint_order alanında sıraları döndürülür.

Aşağıdaki örnekte çeşitli başlangıç noktaları, bitiş noktaları ve referans noktaları kullanılarak ABD'deki ülkeler arası rotaların hesaplanması. (Birden çok ara nokta seçmek için listedeki öğeleri seçerken Ctrl-Tıkla'ya basın.) Her rotanın başlangıç ve bitiş noktalarının 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ı için 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 hizmetini kullanırken izin verilen maksimum ara nokta sayısı 25, başlangıç noktası ve hedeftir. Sınırlar Directions API web hizmeti için aynıdır.
  • Directions API web hizmeti için müşterilere başlangıç noktası ve varış noktasının yanı sıra 25 ara nokta da veriliyor.
  • Google Haritalar Platformu Premium Planı müşterilerinin 25 ara noktanın yanı sıra kalkış noktası ve varış noktası da vardır.
  • Toplu taşıma yol tarifleri için ara noktalar desteklenmez.

Sürüklenebilir Yol Tarifi

Kullanıcılar çekilebilir olduklarında DirectionsRenderer kullanılarak görüntülenen bisiklet, yürüyüş veya arabayla yol tariflerini dinamik olarak değiştirebilir. Böylece, kullanıcıların haritada ortaya çıkan yolları tıklayıp sürükleyerek rotaları seçmesine ve değiştirmesine olanak tanır. Bir oluşturucunun ekranının, draggable özelliğini true olarak ayarlayarak sürüklenebilir yol tariflerine izin verip vermediğini belirtirsiniz. Toplu taşıma yol tarifleri sürüklenemez.

Yol tarifleri sürüklenebilir olduğunda, kullanıcı oluşturulan sonucun yolunda (veya ara noktasında) 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. Sürümden sonra haritaya bir geçiş ara noktası eklenir (küçük, beyaz bir işaretçiyle gösterilir). Bir yol segmentinin seçilmesi ve taşınması, yolun bu kısmının bacaklarını değiştirirken, ara nokta işaretçisinin (başlangıç ve bitiş noktaları dahil) seçilmesi ve taşınması, yolun bu ara noktadan geçen bacaklarının değişmesine neden olur.

Sürüklenebilir yol tarifleri değiştirildiğinden ve istemci tarafı olarak oluşturulduğundan, kullanıcı görüntülenen yol tariflerini değiştirdiğinde bildirim almak için DirectionsRenderer üzerindeki directions_changed etkinliğini izleyebilir ve yönetebilirsiniz.

Aşağıdaki kod, Avustralya'nın batı kıyısındaki Perth'ten doğu kıyısındaki Sidney'e yapılan bir yolculuğu gösterir. 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öster

Örneği Dene