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 daha başka faktörler dikkate alınabilir. 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 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 döndürebilir. Yol tarifi, bir harita üzerinde rotayı çizen bir çoklu çizgi olarak veya ek olarak bir <div> öğesi içinde bir dizi metin açıklaması olarak gösterilir (örneğin, "IIB kullanımlı Bridge rampasına doğru sağa").

Kullanmaya başlama

Maps JavaScript API'de Yol Tarifi hizmetini kullanmadan önce, Google Cloud Console'da Directions API'nin Haritalar JavaScript API için ayarladığınız projede etkinleştirildiğinden emin olun.

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 hazırsınız demektir. API listede yoksa etkinleştirin:
    1. Kitaplık sekmesini görüntülemek için sayfanın üst kısmındaki API'Yİ ETKİNLEŞTİR'i seçin. Alternatif olarak sol taraftaki menüden Kitaplık'ı seçin.
    2. Directions API'yi arayın, ardından sonuçlar listesinden API'yi seçin.
    3. ETKİNLEŞTİR'i seçin. İşlem tamamlandığında Kontrol Paneli'ndeki API'ler listesinde Directions API görünür.

Fiyatlandırma ve politikalar

Fiyatlandırma

16 Temmuz 2018 tarihinden 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 Yol Tarifi hizmetini kullanmaya ilişkin 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 sunucuyu çağırması gerektiği için Yol Tarifi hizmetine erişim eşzamansız. Bu nedenle, istek tamamlandıktan sonra yürütülmesi için bir geri çağırma yöntemi iletmeniz gerekir. Bu geri çağırma yöntemi sonuçları işlemelidir. Yol tarifi hizmetinin, farklı routes[] dizisi olarak birden fazla olası seyahat planı döndürebileceğini unutmayın.

Haritalar JavaScript API'sinde 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. Bu komut, giriş terimlerini ve yanıtı aldıktan sonra yürütülecek geri çağırma yöntemini içeren bir DirectionsRequest nesne çağrısı iletir.

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 tariflerinin hesaplanacağı başlangıç konumunu belirtir. Bu değer, String (örneğin, "Chicago, IL"), LatLng değeri veya Place nesnesi olarak belirtilebilir. Place nesnesi kullanırsanı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. Yer Otomatik Tamamlama'daki yer kimliklerinin kullanımına dair bir örnek için Yer Otomatik Tamamlama ve Yol Tarifleri bölümüne bakın.
  • destination (zorunlu), yol tariflerinin hesaplanacağı son konumu belirtir. Seçenekler, yukarıda açıklanan origin alanı için kullanılan seçeneklerle aynıdır.
  • travelMode (zorunlu), yol tarifi hesaplanırken 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 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österirken 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ı), bir DirectionsWaypoint dizisini belirtir. Referans noktaları, bir rotayı belirtilen konumlar üzerinden yönlendirebilir. 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 olarak, Place nesnesi olarak veya coğrafi kodlaması yapılacak String olarak belirtir.
    • stopover, referans noktasının rota üzerinde bir durak olduğunu belirten bir booledir. Rota, rotayı iki rotaya bölmeyi etkiler.

    (Ara noktalar hakkında daha fazla bilgi için aşağıdaki Rotalarda Referans Noktaları Kullanma bölümüne bakın.)

  • optimizeWaypoints (isteğe bağlı), sağlanan waypoints öğesini kullanan rotanın, referans noktalarının daha verimli bir sırada yeniden sıralanarak optimize edilebileceğini belirtir. true ise Yol tarifi hizmeti, yeniden sıralanmış waypoints alanını waypoint_order alanında döndürür.(Daha fazla bilgi için aşağıdaki Rotalarda referans noktalarını 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 seçenek 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çınması gerektiğini belirtir.
  • avoidHighways (isteğe bağlı), true olarak ayarlandığında, hesaplanan rotalarda mümkünse büyük otoyollardan kaçınılması gerektiğini belirtir.
  • avoidTolls (isteğe bağlı), true olarak ayarlandığında, hesaplanmış rotalarda mümkünse paralı yollardan kaçınmanız 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 bölümünü inceleyin.)

Aşağıda 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 Şekli

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

  • DRIVING (Varsayılan), yol ağını kullanan standart arabayla yol tariflerini belirtir.
  • BICYCLING, bisiklet yolları ve tercih edilen sokaklarda bisikletliler için yol tarifi istiyor.
  • TRANSIT toplu taşıma rotaları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. Bu yol 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: Yürüme yol tarifleri, açık ve yaya yollarını içeremez. Bu nedenle, yaya yol tarifleri DirectionsResult aracında uyarı döndürür. Bu uyarılar her zaman kullanıcıya gösterilmelidir. Varsayılan DirectionsRenderer kullanmıyorsanız uyarıların gösterilmesini sağlamak sizin sorumluluğunuzdadır.

Toplu Taşıma Seçenekleri

Yol tarifi isteği için kullanılabilecek seçenekler, ulaşım şekilleri arasında farklılık gösterir. Toplu taşımayla yol tarifi istenirken avoidHighways, avoidTolls, waypoints[] ve optimizeWaypoints seçenekleri yoksayılır. TransitOptions nesne değişmez değeri aracılığıyla toplu taşımaya özel yönlendirme seçeneklerini belirtebilirsiniz.

Toplu taşımayla yol tarifi zamana duyarlıdır. Yol tarifi, yalnızca gelecekteki zamanlarda döndürülecektir.

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ı), bir Date nesnesi olarak istenen varış zamanını belirtir. Varış saati belirtilmişse kalkış saati dikkate alınmaz.
  • departureTime (isteğe bağlı), bir Date nesnesi olarak istenen kalkış saatini belirtir. arrivalTime belirtilirse departureTime yoksayılır. departureTime veya arrivalTime için herhangi bir değer belirtilmemişse 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 bir toplu taşıma modunu belirtir. Aşağıdaki değerlere izin verilir:
    • BUS, hesaplanan rotanın otobüsle seyahat etmeyi tercih ettiğini belirtir.
    • RAIL, hesaplanan rotanın tren, tramvay, hafif raylı sistem ve metroyla seyahat etmeyi tercih ettiğini belirtir.
    • SUBWAY, hesaplanan rotanın metroyla seyahat etmeyi tercih ettiğini belirtir.
    • TRAIN, hesaplanan rotanın trenle seyahat etmeyi tercih ettiğini belirtir.
    • TRAM, hesaplanan rotanın tramvay ve hafif raylı sistem ile seyahat etmeyi tercih ettiğini belirtir.
  • routingPreference (isteğe bağlı), toplu taşıma rotalarıyla ilgili tercihleri belirtir. Bu seçeneği kullandığınızda, 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 birlikte 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 yönlendirme seçeneklerini DrivingOptions nesnesi aracılığıyla belirleyebilirsiniz.

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 kalkış için istenen saati belirtir. Değerin mevcut veya gelecekteki bir zamana ayarlanması gerekir. 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 dahil ederseniz API, o anki beklenen trafik koşullarına göre en iyi rotayı döndürür ve yanıtta trafikteki tahmini süreyi (duration_in_traffic) içerir. Kalkış saati belirtmezseniz (yani istek drivingOptions içermiyorsa) döndürülen rota, trafik durumunu dikkate almadan genel olarak iyi bir rotadır.
  • trafficModel (isteğe bağlı), trafikteki zamanı hesaplarken kullanılacak varsayımları belirtir. Bu ayar, yanıttaki duration_in_traffic alanında döndürülen değeri etkiler. Bu değer, 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), hem geçmiş trafik koşulları hem de canlı trafik ile ilgili bilgi sahibi olduğunuz için döndürülen duration_in_traffic öğesinin seyahat süresi için en iyi tahmin zamanı olması gerektiğini belirtir. departureTime ne kadar yakın olursa canlı trafik o kadar önemli hale gelir.
    • pessimistic, döndürülen duration_in_traffic öğesinin çoğu günkü gerçek seyahat süresinden uzun olması gerektiğini belirtir. Ancak bazen, kötü trafik koşullarına sahip olan günler bu değeri aşabilir.
    • optimistic, döndürülen duration_in_traffic öğesinin çoğu günkü gerçek seyahat süresinden kısa olması gerektiğini belirtir. Bununla birlikte, özellikle iyi trafik koşullarına sahip olan günler bazen bu değerden daha hızlı olabilir.

Aşağıda arabayla yol tarifi için DirectionsRequest örneği 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, yönler kaynak ülkenin veya bölgenin birim sistemi kullanılarak hesaplanır ve görüntülenir. (Not: Kaynaklar her zaman varsayılan olarak metrik birimleri yerine enlem/boylam koordinatları kullanılarak ifade edilir.) Örneğin, "Chicago, IL" ile "Toronto, ONT" arasındaki rotalar sonuçları kilometre cinsinden, ters rota ise sonuçları kilometre cinsinden gösterir. Aşağıdaki UnitSystem değerlerinden birini kullanarak istekte açıkça bir birim ayarlayarak bu birim sistemini geçersiz kılabilirsiniz:

  • UnitSystem.METRIC, metrik sistemin kullanımını belirtir. Mesafeler, kilometre cinsinden gösterilir.
  • UnitSystem.IMPERIAL, İngiliz (İ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 sonucunda, kullanıcıya gösterilmeyen mesafe değerleri de yer alır. Bunlar, her zaman metre cinsinden ifade edilir.

Yol Tarifi için Bölgeye Ağırlık Verme

Google Haritalar API'sı Yol Tarifi Hizmeti, JavaScript önyüklemesini yüklediğiniz alandan (bölge veya ülke) etkilenen adres sonuçlarını döndürür. (Çoğu kullanıcı https://maps.googleapis.com/ yüklediği için bu, Amerika Birleşik Devletleri'nde dolaylı bir alan adı olarak ayarlanır.) Önyüklemeyi desteklenen farklı bir alandan yüklerseniz söz konusu alandan etkilenen sonuçlar alırsınız. Örneğin, "San Francisco" araması https://maps.googleapis.com/ (ABD) yükleyen uygulamalardan http://maps.google.es/ (İspanya) yüklenen uygulamalardan farklı sonuçlar döndürebilir.

Yol tarifi hizmetini, region parametresini kullanarak sonuçları belirli bir bölgeye 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 doğrudan ccTLD'yle ("üst düzey alan") eşlenir. Örneğin, "co.uk" içindeki "uk" gibi iki karakterli değerler. Bazı durumlarda region etiketi, bazen ccTLD değerlerinden farklı olan ISO-3166-1 kodlarını da destekler (örneğin, "İngiltere" için GB).

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 karakterlik bölge alt etiketleri (Unicode CLDR biçimi) kullanın. Diğer tüm girişlerde hatalar ortaya çıkar.

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.

Yol Tarifleri Oluşturma

route() yöntemiyle DirectionsService için yol tarifi isteği başlatmak için hizmet isteğinin tamamlanmasının ardından yürütülen bir geri çağırmanın iletilmesi gerekir. Bu geri çağırma, yanıtta bir DirectionsResult ve bir DirectionsStatus kodu döndürür.

Yol Tarifi Sorgusu 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ğında, hedefinde 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ının 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, kaynak veya hedef bilgileri eksik olan ya da referans noktası 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, bir sunucu hatası nedeniyle yol tarifi isteğinin işlenemediğini gösteriyor. Tekrar denerseniz 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 olmanız gerekir.

Yol Tarifi Sonucunu Görüntüleme

DirectionsResult, yol tarifi sorgusunun sonucunu içerir. Bu sorgu, kendiniz işleyebilir veya sonucu bir haritada otomatik olarak işleyebilecek DirectionsRenderer nesnesine iletebilirsiniz.

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

  1. Bir DirectionsRenderer nesnesi oluşturun.
  2. İletilen haritaya bağlamak için oluşturucuda setMap() işlevini çağırın.
  3. Oluşturucu üzerinde setDirections(), yukarıda belirtildiği gibi DirectionsResult değerini iletin. Oluşturucu bir MVCObject olduğundan, özelliklerinde yapılan tüm değişiklikleri otomatik olarak algılar ve ilişkili yol tarifi değiştiğinde haritayı günceller.

Aşağıdaki örnekte, Route 66'taki iki konum arasındaki yol tarifleri hesaplanmıştır. Kalkış noktası ve hedef, açılır listelerde belirtilen "start" ve "end" değerleri tarafından belirlenir. DirectionsRenderer, çoklu çizginin belirtilen konumlar arasındaki görünümünü ve kaynak, hedef ve mümkünse referans noktalarındaki 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ö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öster

Aşağıdaki örnekte, San Francisco, CA'daki Haight-Ashbury ile Ocean Beach arasında farklı ulaşım şekillerinin kullanıldığı 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öster

DirectionsRenderer, yalnızca çoklu çizgi görünümünü ve ilişkili işaretçileri işlemekle kalmaz, aynı zamanda bir dizi adım olarak yol tariflerinin metinsel görünümünü de işleyebilir. Bunun için DirectionsRenderer cihazınızda setPanel() numarasını çağırarak bu bilgilerin görüntüleneceği <div> bilgisini aktarın. Böylece, uygun telif hakkı bilgilerini ve sonuçla ilişkili olabilecek uyarıları görüntüleyebilirsiniz.

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 başlıklı makaleyi inceleyin.) Toplu taşıma yol tarifleri söz konusu olduğunda saat, ilgili toplu taşıma durağının bulunduğu saat diliminde gösterilir.

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

DirectionsResult Nesnesi

DirectionsService adresine yol tarifi isteği gönderirken bir durum kodundan ve bununla birlikte DirectionsResult nesnesinden oluşan bir yanıt alırsınız. DirectionsResult, aşağıdaki alanlara sahip bir nesne değişmez değeridir:

  • geocoded_waypoints[], her biri kaynak, hedef ve ara noktaların coğrafi kodlamasını açıklayan ayrıntılar içeren bir DirectionsGeocodedWaypoint nesnesi dizisi içerir.
  • routes[], DirectionsRoute nesnelerinden oluşan bir dizi içeriyor. Her rota, kalkış noktasında DirectionsRequest içinde sağlanan hedefe giden yolu gösterir. Genellikle, isteğin provideRouteAlternatives alanı true olarak ayarlanmadığı sürece, 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 noktalar aracılığıyla ilave edilen 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 ana rotayı alternatif bir rotayla eşleşene kadar sürükleyebilirler.

Yol tarifi coğrafi kodlamalı ara noktalar

DirectionsGeocodedWaypoint, kaynak, hedef ve referans noktalarının coğrafi kodlaması hakkında ayrıntılar içerir.

DirectionsGeocodedWaypoint, aşağıdaki alanlara sahip 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 oluşmadığını gösterir. Adres başarıyla ayrıştırılır ve en azından bir coğrafi kodlama döndürülür.
    • "ZERO_RESULTS", coğrafi kodlamanın başarılı olduğunu ancak hiçbir sonuç döndürmediğini gösterir. Bu durum, coğrafi kodlayıcının mevcut olmayan bir address iletmesi halinde gerçekleşebilir.
  • partial_match, coğrafi kodun orijinal istek için tam eşleşme döndürmediğini ancak istenen adresin bir kısmıyla eşleşebildiğini gösterir. Yanlış yazım ve/veya eksik adres için yapılan orijinal isteği inceleyebilirsiniz.

    Kısmi eşleşmeler genellikle istekte ilettiğiniz konumda 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, UK" araması hem Henry Street hem de Henrietta Street için kısmi bir eşleşme döndürür. Bir istek yanlış yazılmış bir adres bileşeni içeriyorsa coğrafi kodlama hizmetinin alternatif bir adres önerebilir. 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, Google Yerler API'si kitaplığını kullanarak place_id kullanarak yerel bir işletmenin telefon numarası, çalışma saatleri ve kullanıcı yorumları gibi ayrıntılarını alabilirsiniz. Yer kimliğine genel bakış sayfası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ü tanımlayan bir ya da daha fazla etiket kümesi içerir. Örneğin, "Chicago" coğrafi kodu, "Chicago"nun bir şehir olduğunu belirten "yerellik" ve aynı zamanda bir siyasi tüzel kişi olduğunu belirten "politik" değerini döndürür.

Yol Tarifi Rotaları

Not: Eski DirectionsTrip nesnesi DirectionsRoute olarak yeniden adlandırıldı. Bir rotanın, yalnızca üst seyahatin bir bacağı değil, başlangıcından sonuna kadarki yolculuğun tamamı anlamına geldiğini unutmayın.

DirectionsRoute öğesi, belirtilen kaynak ve hedeften tek bir sonuç içerir. Bu rota, herhangi bir ara noktanın belirtildiğine bağlı olarak bir veya daha fazla bacaktan (DirectionsLeg türünde) oluşabilir. Ayrıca rota, kullanıcıya rota bilgilerinin yanı sıra gösterilmesi gereken telif hakkı ve uyarı bilgileri de içerir.

DirectionsRoute, aşağıdaki alanlara sahip bir nesne değişmez değeridir:

  • legs[], her biri belirtilen rota içindeki iki konumdan alınan rotanın bir ayağıyla ilgili bilgiler içeren bir DirectionsLeg nesnesi dizisi içerir. Belirtilen her referans noktası veya hedef için ayrı bir bacak bulunur. (Ara noktası olmayan bir rota tam olarak bir DirectionsLeg içerir.) Her bacak, bir dizi DirectionStep'dan oluşur.
  • waypoint_order, hesaplanan rotadaki ara noktaların sırasını belirten bir dizi içerir. DirectionsRequest, optimizeWaypoints: true tutarından geçirildiyse bu dizide değiştirilmiş bir sipariş olabilir.
  • overview_path, sonuç olarak elde edilen yol tariflerinin yaklaşık (düzleş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, oluşan yol tariflerinin yaklaşık (düzleştirilmiş) yoludur.
  • bounds, söz konusu rota boyunca çoklu çizginin sınırlarını belirten bir LatLngBounds içerir.
  • copyrights, bu rota için görüntülenecek telif hakkı metnini içerir.
  • warnings[], bu yol tariflerini gösterirken görüntülenecek bir dizi uyarı içerir. Sağlanan DirectionsRenderer nesnesini kullanmıyorsanız bu uyarıları kendiniz yönetmeniz ve göstermeniz gerekir.
  • fare, bu rotadaki toplam ücreti (yani toplam bilet maliyetlerini) içerir. Bu mülk yalnızca toplu taşıma istekleri ve tüm toplu taşıma ayağı için ücret bilgilerinin sunulduğu rotalar için iade edilir. Bu bilgiler arasında şunlar bulunur:
    • 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 Bacakları

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

DirectionsLeg, başlangıç noktasından hesaplanan rotadaki hedefe giden yolculuğun tek bir ayakını tanımlar. Referans noktası olmayan rotalar için tek bir "bacak" 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 alanlara sahip 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, bu ayağın kapladığı toplam mesafeyi aşağıdaki biçimdeki bir Distance nesnesi olarak belirtir:

    • value, metre cinsinden mesafeyi gösterir
    • text, mesafenin dizenin temsilini içerir. Bu, varsayılan olarak kaynakta kullanılan birimler olarak görüntülenir. (Örneğin, ABD'deki herhangi bir kaynak için mil kullanılır.) Orijinal sorguda özellikle bir UnitSystem ayarlayarak bu birim sistemini geçersiz kılabilirsiniz. Hangi birim sistemi 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ımlanmayabilir.

  • duration, aşağıdaki formun Duration nesnesi olarak bu bacağın toplam süresini gösterir:

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

    Süre bilinmiyorsa bu alanlar tanımlanmayabilir.

  • duration_in_traffic, mevcut trafik koşulları dikkate alınarak bu bağın toplam süresini gösterir. 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 değerinin true olduğu ara noktaları içermez.
    • İstek özellikle arabayla yol tarifi için ve mode özelliği driving olarak ayarlandı.
    • departureTime, istekteki 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, süreyi saniye cinsinden gösterir.
    • text, sürenin kullanıcılar tarafından okunabilen bir temsilini içerir.
  • arrival_time, bu ayağın tahmini varış saatini içerir. Bu mülk, yalnızca toplu taşımayla yol tarifi için iade edilir. Sonuç, üç özelliği olan bir Time nesnesi olarak döndürülür:
    • value, JavaScript Date nesnesi olarak belirtilir.
    • text değerini dize olarak belirtir. 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 tanımlandığı şekilde saat dilimi adıdır, ör. "Amerika/New_York".
  • departure_time, bu nesne için Time nesnesi olarak belirtilen tahmini kalkış saatini içerir. departure_time yalnızca toplu taşımayla yol tarifi için kullanılabilir.
  • start_location, bu bacağın LatLng seviyesini içeriyor. Yol Tarifi Web Hizmeti, başlangıç ve bitiş noktalarında en yakın ulaşım seçeneğini (genellikle bir yol) kullanarak konumlar arasındaki yol tariflerini hesapladığı için start_location, örneğin kalkış noktasına yakın olmayan bir yol için bu bacağın başlangıç noktasından farklı olabilir.
  • end_location, bu ayağın hedefinin LatLng değerini içeriyor. DirectionsService Başlangıç ve bitiş noktalarında en yakın ulaşım seçeneğini (genellikle bir yol) kullanarak konumlar arasındaki yol tariflerini hesapladığı için end_location hedefin yakınında bir yol yoksa bu bacak için sağlanan hedeften farklı olabilir.
  • start_address, bu ayağın başlangıcında okunabilir bir adres (genellikle açık adres) içerir.

    Bu içeriğin olduğu gibi okunması amaçlanmıştır. Biçimlendirilmiş adresi programatik olarak ayrıştırmayın.
  • end_address, bu bacağın ucunda yer alan ve kullanıcıların okuyabileceği bir adres (genellikle açık adres) içerir.

    Bu içeriğin olduğu gibi okunması amaçlanmıştır. Biçimlendirilmiş adresi programatik olarak ayrıştırmayın.

Yol Tarifi Adımları

DirectionsStep, yol tarifi rotasının en atomik birimidir ve yolculuktaki belirli, tek bir talimatı açıklayan tek adımı içerir. Ör. "K. yönünde sola dönün 4. St." Bu adım yalnızca talimatı açıklamakla kalmıyor, aynı zamanda bu adımın sonraki adımla ilişkisiyle ilgili mesafe ve süre bilgilerini de içerir. Örneğin, "I-80 West'te birleştir" olarak belirtilen bir adım, "37 mil" ve "40 dakika" sürelerini içerebilir. Bu, 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, transit nesnesi biçiminde ek Toplu Taşımaya Özel Bilgiler içerir. Yol tarifinde birden fazla ulaşım modu varsa steps[] dizisinde yürüyüş veya sürüş adımları için ayrıntılı yol tarifleri sunulur. Örneğin, bir yürüyüş adımında başlangıç ve bitiş konumundan yol tarifi yer alır: "İnene Street'e ve Fitch Caddesi'ne yürü". Bu adım, steps[] dizisinde bu rota için ayrıntılı yaya yol tariflerini de içerir. Örneğin, "Kuzey-batıya doğru ilerleyin", "Arelious Walker'a sola dönün" ve "Innes Bulvarı'na sola dönün" gibi.

DirectionsStep, aşağıdaki alanlara sahip bir nesne değişmez değeridir:

  • instructions, bir metin dizesinde bu adıma ilişkin talimatlar içerir.
  • distance, bir sonraki adım olan bu adım kapsamındaki mesafeyi Distance nesnesi olarak içerir. (Yukarıdaki DirectionsLeg bölümünde açıklanan açıklamayı inceleyin.) Mesafe bilinmiyorsa bu alan tanımsız olabilir.
  • duration, adımın gerçekleştirilmesi için gereken bir sonraki adımla ilgili bir Duration nesnesi olarak tahmini süreyi içerir. (Yukarıdaki DirectionsLeg bölümüne bakın.) Süre bilinmiyorsa bu alan tanımsız 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 (düzleştirilmiş) bir yoludur.
  • steps[], toplu taşıma yol tariflerinde yaya veya arabayla yol tarifleri için 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'yı içerir. Toplu taşımayla 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 bilgiler içerir.

Toplu Taşımaya Özel Bilgiler

Toplu taşımayla yol tarifi, diğer ulaşım modlarıyla alakalı olmayan ek bilgiler döndürür. Bu ek özellikler, TransitDetails nesnesi aracılığıyla gösterilir ve DirectionsStep ö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 sunar:

  • arrival_stop, aşağıdaki özelliklere sahip olan varış istasyonunu/durağını temsil eden bir TransitStop nesnesi içeriyor:
    • name toplu taşıma durağının/durağının adını girin. ör. "Birlik Meydanı"
    • location, LatLng olarak gösterilen toplu taşıma durağının/durağının konumu.
  • departure_stop, kalkış istasyonunu/durağını temsil eden bir TransitStop nesnesi içeriyor.
  • arrival_time, üç özellik içeren bir Time nesnesi olarak belirtilen varış saatini içerir:
    • value, JavaScript Date nesnesi olarak belirtilir.
    • text değerini dize olarak belirtir. 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 tanımlandığı şekilde saat dilimi adıdır, ör. "Amerika/New_York".
  • departure_time, Time nesnesi olarak belirtilen kalkış saatini içerir.
  • headsign, bu çizginin araçta veya kalkış noktasında duraklandığı için bu doğrultuda seyahat edilecek yönü belirtir. Bu, çoğunlukla terminal istasyonu olacaktır.
  • headway (varsa), şu anda aynı duraktan kalkan uçuşlar için beklenen saniye sayısını belirtir. Örneğin, headway değeri 600 olduğunda otobüsünüzü kaçırmanız durumunda on dakika beklersiniz.
  • line, bu adımda kullanılan toplu taşıma hattı hakkında bilgi içeren bir TransitLine nesne değişmez değeri içeriyor. 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 varış noktası dahil edilmiyor. Örneğin, yol tarifleriniz A noktasından ayrılmayı, B ve C duraklarını geçip D durağına gelmeyi içeriyorsa num_stops 3 sonucunu döndürür.

Transit Hat

TransitLine nesnesi aşağıdaki özellikleri sunar:

  • name, bu toplu taşıma hattının tam adını içerir (ör. "7 Avenue Express" ya da "14th St Crosstown".
  • short_name, bu toplu taşıma hattının kısa adını içerir. Bu, genellikle "2" veya "M14" gibi bir satır numarası olur.
  • agencies, tek bir TransitAgency nesnesi içeren bir 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çerir.

    Not: Toplu taşıma yol tariflerini DirectionsRenderer nesnesi 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, transit operatörü tarafından sağlanan şekilde bu toplu taşıma hattının URL'sini içerir.
  • icon, bu satırla ilişkilendirilmiş simgenin URL'sini 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ında, bu hattın simgeleri bulunur.
  • color, bu toplu taşıma tabelasında 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 genellikle kullanılan metin rengini içerir. Renk, onaltılık bir dize olarak belirtilir.
  • vehicle, aşağıdaki özellikleri içeren bir Vehicle nesnesi içerir:
    • name, bu satırdaki 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ü dokümanlarına bakın.
    • icon, bu araç türüyle yaygın olarak ilişkilendirilen simgenin bir URL'sini içerir.
    • local_icon, yerel toplu taşıma tabelasına göre bu araç türüyle ilişkili simgenin URL'sini içerir.

Araç Tipi

VehicleType nesnesi aşağıdaki özellikleri sunar:

Değer Tanım
VehicleType.RAIL Demiryolu
VehicleType.METRO_RAIL Hafif raylı toplu taşıma.
VehicleType.SUBWAY Yer altı hafif raylı sistem.
VehicleType.TRAM Toprak hafif raylı sistem üzerinden.
VehicleType.MONORAIL Monoray.
VehicleType.HEAVY_RAIL Ağır demir yolu.
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 Paylaşım taksisi, rotasında herhangi bir yere yolcu bırakabilen ve yolcuları alınabilen bir otobüsdür.
VehicleType.FERRY Feribot.
VehicleType.CABLE_CAR Genellikle zemin üzerinde çalışan, kablo yardımıyla çalışan bir araç. Teleferikler VehicleType.GONDOLA_LIFT türünde olabilir.
VehicleType.GONDOLA_LIFT Teleferik.
VehicleType.FUNICULAR Kablo kullanarak dik bir eğim halinde yukarı çekilen araç. Füniküler genellikle iki arabadan oluşur ve arabaların her biri diğerine karşı ağırlık verir.
VehicleType.OTHER Diğer tüm araçlar bu türü iade eder.

Yol Tarifi Sonuçlarını İnceleme

DirectionsResults bileşenleri (DirectionsRoute, DirectionsLeg, DirectionsStep ve TransitDetails) herhangi bir yol tarifi yanıtını ayrıştırırken incelenebilir ve kullanılabilir.

Önemli: Toplu taşıma yol tariflerini DirectionsRenderer nesnesi 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 yerlere yürüyüş yolları gösterilmektedir. Her adımın işaretçilerini eklemek için rotanın DirectionsStep bölümünü inceler ve söz konusu adım için talimat metni içeren bir InfoWindow öğesine bilgi ekler.

Not: Yürüyüş yol tariflerini hesapladığımız için kullanıcıya tüm uyarıları 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öster

Rotalarda Referans Noktaları Kullanma

Yol Tarifi İsteği'nde belirtildiği gibi, yaya, bisiklet veya arabayla yol tarifleri için Yol Tarifi hizmetini kullanarak rotaları hesaplarken yol noktalarını da (DirectionsWaypoint türünde) belirtebilirsiniz. Toplu taşıma yol tariflerinde ara noktalar kullanılamaz. Referans 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 (gerekli), 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 konumda mı (false) rota tercihi olduğunu gösterir. Duraklamalar varsayılan olarak true şeklindedir.

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

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

Aşağıdaki örnekte, çeşitli başlangıç noktaları, uç noktalar ve referans noktaları kullanılarak ABD'deki kros güzergâhları hesaplanmaktadır. (Birden çok ara nokta seçmek için listedeki öğeleri seçerken Ctrl-Tıklama'ya basın.) Her bir rotanın başlangıç ve bitiş noktalarına ait metni bize sunmak 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ı 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 referans noktası sayısı 25'tir ve kaynak ile hedef mevcuttur. Sınırlar Directions API web hizmeti için aynıdır.
  • Directions API web hizmeti için müşterilere 25 ara noktanın yanı sıra kaynak ve hedef bilgileri verilir.
  • Google Haritalar Platformu Premium Plan müşterilerinin 25 ara noktaya ve başlangıç noktasına ve hedefe izin verilir.
  • Toplu taşıma yol tariflerinde ara noktalar desteklenmez.

Sürüklenebilir Yol Tarifi

DirectionsRenderer, çizilebilir bir yol kullanılarak görüntülenen bisiklet, yaya veya arabayla yol tariflerini dinamik olarak değiştirebilir. Böylece, kullanıcıların haritadaki ilgili yolları tıklayıp sürükleyerek rotaları seçip değiştirebilirler. Bir oluşturucunun ekranının sürüklenebilir yol tariflerine izin verip vermediğini draggable özelliğini true olarak belirtirsiniz. Toplu taşımayla yol tarifi sürüklenebilir hale getirilemez.

Yol tarifleri sürüklenebilir olduğunda kullanıcı, oluşturulan sonucun yolunda (veya referans 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. Yayınlandıktan sonra haritaya geçişli bir ara nokta eklenir (küçük bir beyaz işaret ile gösterilir). Bir yol segmentinin seçilmesi ve taşınması, rotanın bu ayağının değiştirilmesine neden olur. Bir referans noktası işaretçisinin (başlangıç ve bitiş noktaları dahil) seçilip taşınması, söz konusu yol noktasından geçen ayağın da değişmesine neden olur.

Sürüklenebilir yol tarifi değiştirilip istemci tarafında oluşturulduğundan, kullanıcı görüntülenen yol tariflerini değiştirdiğinde haberdar olmak için DirectionsRenderer üzerindeki directions_changed etkinliğini izleyebilir ve işleyebilirsiniz.

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 seyahati göstermektedir. Kod, yolculuğun tüm bacakları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 Deneyin