Yol Tarifi Hizmeti

Genel bakış

DirectionsService nesnesini kullanarak yol tariflerini (çeşitli ulaşım yöntemleri kullanarak) hesaplayabilirsiniz. Bu nesne, yol tarifi istekleri alan ve verimli bir yol döndüren Google Haritalar API'si Yol Tarifi Hizmeti ile iletişim kurar. Seyahat süresi, optimize edilen başlıca faktördür ancak mesafe, dönüş sayısı ve daha pek çok faktör de dikkate alınabilir. Bu yol tarifi sonuçlarını kendiniz işleyebilir veya DirectionsRenderer nesnesini kullanarak sonuçları oluşturabilirsiniz.

Yol tarifi isteğinde başlangıç noktası veya hedefi belirtirken bir sorgu dizesi (örneğin, "Chicago, IL" veya "Darwin, NSW, Australia"), LatLng değeri veya Place nesnesi belirtebilirsiniz.

Yol Tarifi hizmeti, bir dizi ara nokta kullanarak çok parçalı yol tariflerini döndürebilir. Yol tarifleri, rotayı haritada çizen bir çoklu çizgi olarak veya ek olarak, bir <div> öğesi içinde metin biçiminde bir dizi açıklama olarak (örneğin, " Williamsburg Köprüsü rampasına doğru sağa dönün") görüntülenir.

Kullanmaya başlama

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

Etkin API'ler listenizi görüntülemek için:

  1. Google Cloud Console'a gidin.
  2. Proje seçin düğmesini tıklayın, ardından Maps JavaScript API için oluşturduğunuz projeyi seçin ve 'ı tıklayın.
  3. Kontrol Paneli'ndeki API listesinde Directions API'yi bulun.
  4. Listede API'yi görüyorsanız her şey hazır demektir. API listede yoksa etkinleştirin:
    1. Sayfanın üst kısmında Kitaplık sekmesini görüntülemek için API'yi ETKİNLEŞTİR'i seçin. Alternatif olarak, sol taraftaki menüden Kitaplık'ı seçin.
    2. Directions API'yi arayın ve sonuçlar listesinden seçin.
    3. ETKİNLEŞTİR'i seçin. İşlem tamamlandığında, Kontrol Paneli'ndeki API listesinde Directions API görünür.

Fiyatlandırma ve politikalar

Fiyatlandırma

16 Temmuz 2018 tarihinden 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ıza 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'si için açıklanan politikalara uygun olmalıdır.

Yol Tarifi İstekleri

Google Haritalar API'sinin harici bir sunucuya çağrı yapması gerektiğinden Yol Tarifi hizmetine erişim eşzamansız olarak yapılır. Bu nedenle, isteğin tamamlanmasının ardından yürütülecek bir callback yöntemi iletmeniz gerekir. Bu geri çağırma yöntemi sonuçları işlemelidir. Yol tarifi hizmetinin, ayrı bir routes[] dizisi olarak birden fazla olası seyahat planı döndürebileceğini unutmayın.

Maps JavaScript API'de yol tariflerini kullanmak için DirectionsService türünde bir nesne oluşturun ve DirectionsService.route() yöntemini çağırarak Yol Tarifi hizmetine bir istek başlatın. Ardından bu nesneye giriş terimlerini ve yanıt alındığında yürütülecek bir geri çağırma yöntemini içeren bir DirectionsRequest nesne değişmez değeri iletin.

DirectionsRequest nesne değişmez değeri aşağıdaki alanları içerir:

{
  origin: LatLng | String | google.maps.Place,
  destination: LatLng | String | google.maps.Place,
  travelMode: TravelMode,
  transitOptions: TransitOptions,
  drivingOptions: DrivingOptions,
  unitSystem: UnitSystem,
  waypoints[]: DirectionsWaypoint,
  optimizeWaypoints: Boolean,
  provideRouteAlternatives: Boolean,
  avoidFerries: Boolean,
  avoidHighways: Boolean,
  avoidTolls: Boolean,
  region: String
}

Bu alanlar aşağıda açıklanmıştır:

  • origin (zorunlu), yol tarifinin hesaplanacağı başlangıç konumunu belirtir. Bu değer, String (örneğin, "Chicago, IL"), LatLng değeri veya Place nesnesi olarak belirtilebilir. Place nesnesi kullanıyorsanız yer kimliği, sorgu dizesi veya LatLng konumu belirtebilirsiniz. Yer kimliklerini Maps JavaScript API'deki Coğrafi Kodlama, Yer Arama ve Yer Otomatik Tamamlama hizmetlerinden alabilirsiniz. Otomatik Yer Tamamlama'daki yer kimliklerinin kullanıldığı bir örnek için Yer Otomatik Tamamlama ve Yol Tarifleri bölümüne bakın.
  • destination (zorunlu), yol tarifinin hesaplanacağı bitiş konumunu belirtir. Seçenekler, yukarıda açıklanan origin alanı ile aynıdır.
  • travelMode (zorunlu), yol tarifi hesaplanırken kullanılacak ulaşım modunu belirtir. Geçerli değerler aşağıdaki Seyahat Modları bölümünde belirtilmiştir.
  • transitOptions (isteğe bağlı), yalnızca travelMode değerinin TRANSIT olduğu istekler için geçerli olan değerleri belirtir. Geçerli değerler, aşağıdaki Toplu Taşıma Seçenekleri bölümünde açıklanmıştır.
  • drivingOptions (isteğe bağlı), yalnızca travelMode değerinin DRIVING olduğu istekler için geçerli olan değerleri belirtir. Geçerli değerler, aşağıdaki Sürüş Seçenekleri bölümünde açıklanmıştır.
  • unitSystem (isteğe bağlı), sonuçları görüntülerken hangi birim sisteminin kullanılacağını belirtir. Geçerli değerler aşağıdaki Birim Sistemleri bölümünde belirtilmiştir.

  • waypoints[] (isteğe bağlı), DirectionsWaypoint dizisi belirtir. Ara noktalar, bir rotayı belirtilen konumlar üzerinden yönlendirerek değiştirir. Bir referans noktası, aşağıda gösterilen alanlarda bulunan bir nesne değişmez değeri olarak belirtilir:

    • location, referans noktasının konumunu LatLng, Yer nesnesi veya coğrafi kodlaması yapılacak bir String olarak belirtir.
    • stopover, referans noktasının rota üzerinde bir durak olduğunu belirten bir boole değeridir. Bu boole, rotayı iki rotaya bölme etkisine sahiptir.

    (Ara noktalar hakkında daha fazla bilgi için aşağıdaki Rotalarda Referans Noktaları Kullanma konusuna bakın.)

  • optimizeWaypoints (isteğe bağlı), sağlanan waypoints kodunu kullanan rotanın, ara noktaların daha verimli bir sırayla yeniden düzenlenmesiyle optimize edilebileceğini belirtir. true ise Yol Tarifi hizmeti, yeniden sıralanan waypoints değerini waypoint_order alanına döndürür.(Daha fazla bilgi için aşağıdaki Rotalarda Referans Noktaları Kullanma konusuna bakın.)
  • true olarak ayarlandığında provideRouteAlternatives (isteğe bağlı), Yol Tarifi hizmetinin yanıtta birden fazla rota alternatifi sağlayabileceğini belirtir. Rota alternatifleri sağlamanın sunucudan yanıt süresini artırabileceğini unutmayın. Bu, yalnızca ara ara noktası olmayan istekler için kullanılabilir.
  • avoidFerries (isteğe bağlı), true olarak ayarlandığında mümkünse hesaplanan rotaların feribotlardan kaçınması gerektiğini gösterir.
  • avoidHighways (isteğe bağlı), true olarak ayarlandığında hesaplanan rotaların mümkünse ana otoyollardan kaçınması gerektiğini gösterir.
  • true olarak ayarlandığında avoidTolls (isteğe bağlı), hesaplanan rotaların mümkünse ücretli yollardan kaçınması gerektiğini gösterir.
  • region (isteğe bağlı), ccTLD ("üst düzey alan") iki karakterli değer olarak belirtilen bölge kodunu belirtir. (Daha fazla bilgi için aşağıdaki Bölgeye Ağırlık Verme bölümüne bakın.)

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

Seyahat Modları

Yol tarifini hesaplarken kullanılacak ulaşım şeklini belirtmeniz gerekir. Şu anda aşağıdaki ulaşım şekilleri desteklenmektedir:

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

Bir ülkenin yol tariflerini ne ölçüde desteklediğini öğrenmek için Google Haritalar Platformu Kapsam Ayrıntıları'na bakın. İlgili yol tarifi türünün kullanılamadığı bir bölge için yol tarifi isterseniz yanıt, DirectionsStatus="ZERO_RESULTS" sonucunu döndürür.

Not: Yaya yol tarifi, net yaya yollarını içermeyebilir. Bu nedenle, yaya yol tarifleri DirectionsResult içinde uyarı döndürür. Bu uyarılar kullanıcıya her zaman gösterilmelidir. Varsayılan DirectionsRenderer kullanmazsanız uyarıların gösterilmesini sağlamak sizin sorumluluğunuzdadır.

Toplu Taşıma Seçenekleri

Yol tarifi isteği için kullanılabilen seçenekler, ulaşım şekillerine göre değişiklik gösterir. Toplu taşıma yol tarifi isterken avoidHighways, avoidTolls, waypoints[] ve optimizeWaypoints seçenekleri yoksayılır. TransitOptions nesne değişmez değerini kullanarak toplu taşımaya özel rota seçeneklerini belirtebilirsiniz.

Toplu taşıma yol tarifleri zamana duyarlıdır. Yol tarifi yalnızca gelecekteki bir kez geri verilir.

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 istenen varış zamanını belirtir. Varış saati belirtilirse kalkış saati yoksayılır.
  • departureTime (isteğe bağlı), Date nesnesi olarak istenen kalkış saatini belirtir. arrivalTime belirtilirse departureTime yoksayılır. departureTime veya arrivalTime için herhangi bir değer belirtilmezse varsayılan olarak şimdi (yani geçerli saat) kullanılır.
  • modes[] (isteğe bağlı), bir veya daha fazla TransitMode nesne değişmez değerini içeren bir dizidir. Bu alan, yalnızca isteğin bir API anahtarı içermesi durumunda dahil edilebilir. Her TransitMode, tercih edilen toplu taşıma modunu belirtir. Aşağıdaki değerlere izin verilir:
    • BUS, hesaplanan rotanın otobüsle seyahati tercih etmesi gerektiğini belirtir.
    • RAIL, hesaplanan rotanın tren, tramvay, hafif raylı tren ve metroyla seyahat etmeyi tercih etmesi gerektiğini belirtir.
    • SUBWAY, hesaplanan rotanın metroyla seyahati tercih etmesi gerektiğini belirtir.
    • TRAIN, hesaplanan rotanın trenle seyahat etmeyi tercih etmesi gerektiğini belirtir.
    • TRAM, hesaplanan rotanın tramvay ve hafif raylı sistem ile seyahat etmeyi tercih etmesi gerektiğini belirtir.
  • routingPreference (isteğe bağlı), toplu taşıma rotalarıyla ilgili tercihleri belirtir. Bu seçeneği kullanarak, API tarafından seçilen varsayılan en iyi rotayı kabul etmek yerine döndürülen seçeneklere ağırlık verebilirsiniz. Bu alan, yalnızca 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 belirtir.

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

{
  origin: 'Hoboken NJ',
  destination: 'Carroll Gardens, Brooklyn',
  travelMode: 'TRANSIT',
  transitOptions: {
    departureTime: new Date(1337675679473),
    modes: ['BUS'],
    routingPreference: 'FEWER_TRANSFERS'
  },
  unitSystem: google.maps.UnitSystem.IMPERIAL
}

Sürüş Seçenekleri

DrivingOptions nesnesi aracılığıyla arabayla yol tarifleri için yönlendirme seç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 istenen kalkış saatini belirtir. Değer, geçerli zamana veya gelecekteki bir zamana ayarlanmalıdır. Geçmiş bir tarih olamaz. (API, farklı saat dilimlerinde tutarlı bir şekilde işlenmesi için tüm tarihleri UTC'ye dönüştürür.) Google Haritalar Platformu Premium Plan müşterileri söz konusu olduğunda isteğe departureTime öğesini dahil ederseniz API, o anki beklenen trafik koşullarına göre en iyi rotayı döndürür ve yanıta trafikte tahmini süreyi (duration_in_traffic) dahil eder. Kalkış saati belirtmezseniz (yani istekte drivingOptions yoksa) döndürülen rota, trafik koşullarını dikkate almadan genellikle iyi bir rotadır.
  • trafficModel (isteğe bağlı), trafikteki süre hesaplanırken kullanılacak varsayımları belirtir. Bu ayar, yanıttaki duration_in_traffic alanında döndürülen değeri etkiler ve 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 hakkında bilinenler göz önünde bulundurulduğunda, döndürülen duration_in_traffic değerinin en iyi seyahat süresi tahmini olması gerektiğini belirtir. departureTime şu ana ne kadar yakınsa canlı trafik daha önemli hale gelir.
    • pessimistic, döndürülen duration_in_traffic değerinin çoğu günde gerçek seyahat süresinden daha uzun olması gerektiğini belirtir, ancak bazen kötü trafik koşullarına sahip günler bu değeri aşabilir.
    • optimistic, döndürülen duration_in_traffic değerinin, çoğu günde gerçek seyahat süresinden daha kısa olması gerektiğini belirtir. Bununla birlikte, bazen trafik koşullarının çok iyi olduğu günler bu değerden daha hızlı olabilir.

Aşağıda arabayla yol tarifi için örnek bir DirectionsRequest verilmiştir:

{
  origin: 'Chicago, IL',
  destination: 'Los Angeles, CA',
  travelMode: 'DRIVING',
  drivingOptions: {
    departureTime: new Date(Date.now() + N),  // for the time N milliseconds from now.
    trafficModel: 'optimistic'
  }
}

Birim Sistemleri

Varsayılan olarak yol tarifleri, kalkış ülkesinin veya bölgesinin birim sistemi kullanılarak hesaplanır ve gösterilir. (Not: Adresler her zaman varsayılan olarak metrik birimler yerine enlem/boylam koordinatları kullanılarak ifade edilen başlangıç noktaları.) Örneğin, "Ankara, İstanbul"dan "Toronto, ONT" konumuna giden bir rotadaki sonuçlar mil cinsinden, ters rota içinse kilometre cinsinden sonuçlar gösterilir. Aşağıdaki UnitSystem değerlerinden birini kullanıp istek içinde açıkça bir tane ayarlayarak bu birim sistemini geçersiz kılabilirsiniz:

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

Not: Bu birim sistem ayarı yalnızca kullanıcıya gösterilen metni etkiler. Yol tarifi sonucu ayrıca, kullanıcıya gösterilmeyen ve her zaman metre cinsinden ifade edilen mesafe değerleri de içerir.

Yol Tarifleri İçin Bölgeye Ağırlık Verme

Google Haritalar API'si Yol Tarifi Hizmeti, JavaScript önyüklemesini yüklediğiniz alan adından (bölge veya ülke) etkilenen adres sonuçlarını döndürür. (Çoğu kullanıcı https://maps.googleapis.com/ hizmetini yüklediğinden, bu işlem örtülü bir alan adını ABD'ye ayarlar.) Önyüklemeyi desteklenen farklı bir alandan yüklerseniz söz konusu alandan etkilenen sonuçlar alırsınız. Örneğin, "San Francisco" için yapılan aramalar, https://maps.googleapis.com/ (ABD) yükleyen uygulamalardan, http://maps.google.es/ (İspanya) yükleyen uygulamalardan farklı sonuçlar döndürebilir.

Yol Tarifi hizmetini, region parametresini kullanarak belirli bir bölgeye ağırlık veren sonuçlar döndürecek şekilde de ayarlayabilirsiniz. Bu parametre, iki karakterli (sayısal olmayan) bir Unicode bölge alt etiketi olarak belirtilen bir bölge kodu alır. Çoğu durumda, bu etiketler doğrudan ccTLD ("üst düzey alan") ile, örneğin "co.uk"deki "uk" gibi iki karakterli değerlerle eşlenir. Bazı durumlarda region etiketi, bazen ccTLD değerlerinden ("İngiltere" için "GB") farklı olan ISO-3166-1 kodlarını da destekler.

region parametresini kullanırken:

  • Yalnızca bir ülke veya bölge belirtin. Birden fazla değer yok sayılır ve isteğin başarısız olmasına yol açabilir.
  • Yalnızca iki karakterlik bölge alt etiketlerini kullanın (Unicode CLDR biçimi). Diğer tüm girişler hataya neden olur.

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

Yol Tarifleri Oluşturma

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

Yol Tarifi Sorgusu Durumu

DirectionsStatus şu değerleri döndürebilir:

  • OK, yanıtın geçerli bir DirectionsResult içerdiğini belirtir.
  • NOT_FOUND, isteğin kaynak, hedef veya ara noktalarında belirtilen konumlardan en az birinin coğrafi kodlaması uygulanamadığı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ı belirtir. Yol noktalarıyla ilgili 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 ortaya çıkar. Ara nokta, dönüş veya talimat sayısını azaltmayı deneyin.
  • INVALID_REQUEST, sağlanan DirectionsRequest değerinin geçersiz olduğunu belirtir. Bu hata kodunun en yaygın nedenleri, bir kaynak ya da hedefin eksik olması ya da ara noktalar içeren bir toplu taşıma isteğidir.
  • OVER_QUERY_LIMIT, web sayfasının izin verilen dönem içinde çok fazla istek gönderdiğini belirtir.
  • REQUEST_DENIED, web sayfasının yol tarifi hizmetini kullanmasına izin verilmediğini belirtir.
  • UNKNOWN_ERROR, sunucu hatası nedeniyle yol tarifi isteğinin işlenemediğini belirtir. Tekrar denerseniz istek başarılı olabilir.

Sonucu işlemeden önce bu değeri kontrol ederek yol tarifi sorgusunun geçerli sonuçlar döndürdüğünden emin olmanız gerekir.

Yol Tarifi Sonucunu Görüntüleme

DirectionsResult, yol tarifi sorgusunun sonucunu içerir. Bu sorguyu kendiniz işleyebilir veya bir DirectionsRenderer nesnesine iletebilirsiniz. Bu nesne, sonucun harita üzerinde otomatik olarak gösterilmesini sağlayabilir.

DirectionsRenderer kullanarak bir DirectionsResult görüntülemek için aşağıdakileri yapmanız gerekir:

  1. Bir DirectionsRenderer nesnesi oluşturun.
  2. İletilen haritaya bağlamak için oluşturucuda setMap() çağrısı yapın.
  3. Oluşturucuda setDirections() yöntemini, 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. Kalkış ve varış noktaları, açılır listelerde belirtilen "start" ve "end" değerlerine göre belirlenir. DirectionsRenderer, belirtilen konumlar arasındaki çoklu çizginin görünümünü ve varsa işaretçilerin başlangıç, varış noktası ve ara noktalardaki yerleşimini işler.

function initMap() {
  var directionsService = new google.maps.DirectionsService();
  var directionsRenderer = new google.maps.DirectionsRenderer();
  var chicago = new google.maps.LatLng(41.850033, -87.6500523);
  var mapOptions = {
    zoom:7,
    center: chicago
  }
  var map = new google.maps.Map(document.getElementById('map'), mapOptions);
  directionsRenderer.setMap(map);
}

function calcRoute() {
  var start = document.getElementById('start').value;
  var end = document.getElementById('end').value;
  var request = {
    origin: start,
    destination: end,
    travelMode: 'DRIVING'
  };
  directionsService.route(request, function(result, status) {
    if (status == 'OK') {
      directionsRenderer.setDirections(result);
    }
  });
}

HTML gövdesinde:

<div>
<strong>Start: </strong>
<select id="start" onchange="calcRoute();">
  <option value="chicago, il">Chicago</option>
  <option value="st louis, mo">St Louis</option>
  <option value="joplin, mo">Joplin, MO</option>
  <option value="oklahoma city, ok">Oklahoma City</option>
  <option value="amarillo, tx">Amarillo</option>
  <option value="gallup, nm">Gallup, NM</option>
  <option value="flagstaff, az">Flagstaff, AZ</option>
  <option value="winona, az">Winona</option>
  <option value="kingman, az">Kingman</option>
  <option value="barstow, ca">Barstow</option>
  <option value="san bernardino, ca">San Bernardino</option>
  <option value="los angeles, ca">Los Angeles</option>
</select>
<strong>End: </strong>
<select id="end" onchange="calcRoute();">
  <option value="chicago, il">Chicago</option>
  <option value="st louis, mo">St Louis</option>
  <option value="joplin, mo">Joplin, MO</option>
  <option value="oklahoma city, ok">Oklahoma City</option>
  <option value="amarillo, tx">Amarillo</option>
  <option value="gallup, nm">Gallup, NM</option>
  <option value="flagstaff, az">Flagstaff, AZ</option>
  <option value="winona, az">Winona</option>
  <option value="kingman, az">Kingman</option>
  <option value="barstow, ca">Barstow</option>
  <option value="san bernardino, ca">San Bernardino</option>
  <option value="los angeles, ca">Los Angeles</option>
</select>
</div>

Örneği görüntüleyin

Aşağıdaki örnekte San Francisco, Kaliforniya'daki Haight-Ashbury'den Ocean Beach'e farklı ulaşım şekilleri kullanılarak yol tarifleri gösterilmektedir:

function initMap() {
  var directionsService = new google.maps.DirectionsService();
  var directionsRenderer = new google.maps.DirectionsRenderer();
  var haight = new google.maps.LatLng(37.7699298, -122.4469157);
  var oceanBeach = new google.maps.LatLng(37.7683909618184, -122.51089453697205);
  var mapOptions = {
    zoom: 14,
    center: haight
  }
  var map = new google.maps.Map(document.getElementById('map'), mapOptions);
  directionsRenderer.setMap(map);
}

function calcRoute() {
  var selectedMode = document.getElementById('mode').value;
  var request = {
      origin: haight,
      destination: oceanBeach,
      // Note that JavaScript allows us to access the constant
      // using square brackets and a string value as its
      // "property."
      travelMode: google.maps.TravelMode[selectedMode]
  };
  directionsService.route(request, function(response, status) {
    if (status == 'OK') {
      directionsRenderer.setDirections(response);
    }
  });
}

HTML gövdesinde:

<div>
<strong>Mode of Travel: </strong>
<select id="mode" onchange="calcRoute();">
  <option value="DRIVING">Driving</option>
  <option value="WALKING">Walking</option>
  <option value="BICYCLING">Bicycling</option>
  <option value="TRANSIT">Transit</option>
</select>
</div>

Örneği görüntüleyin

DirectionsRenderer, çoklu çizginin ve ilişkili işaretçilerin görüntülenmesini sağlamanın yanı sıra yol tariflerinin bir dizi adım halinde görüntülenmesini sağlayabilir. Bunu yapmak için DirectionsRenderer cihazınızda setPanel() yöntemini çağırın ve bu bilgiyi içinde <div> iletin. Bu şekilde ayrıca uygun telif hakkı bilgilerini ve sonuçla ilişkili olabilecek uyarıları görüntüleyebilirsiniz.

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

Aşağıdaki örnek, yukarıda gösterilenle aynıdır, ancak yol tariflerinin görüntüleneceği bir <div> paneli içermektedir:

function initMap() {
  var directionsService = new google.maps.DirectionsService();
  var directionsRenderer = new google.maps.DirectionsRenderer();
  var chicago = new google.maps.LatLng(41.850033, -87.6500523);
  var mapOptions = {
    zoom:7,
    center: chicago
  }
  var map = new google.maps.Map(document.getElementById('map'), mapOptions);
  directionsRenderer.setMap(map);
  directionsRenderer.setPanel(document.getElementById('directionsPanel'));
}

function calcRoute() {
  var start = document.getElementById('start').value;
  var end = document.getElementById('end').value;
  var request = {
    origin:start,
    destination:end,
    travelMode: 'DRIVING'
  };
  directionsService.route(request, function(response, status) {
    if (status == 'OK') {
      directionsRenderer.setDirections(response);
    }
  });
}

HTML gövdesinde:

<div id="map" style="float:left;width:70%;height:100%"></div>
<div id="directionsPanel" style="float:right;width:30%;height:100%"></div>

Örneği görüntüleyin

DirectionsResult Nesnesi

DirectionsService için yol tarifi isteği gönderdiğinizde, durum kodu ve sonuç olan DirectionsResult nesnesinden oluşan bir yanıt alırsınız. DirectionsResult, aşağıdaki alanları içeren bir nesne değişmez değeridir:

  • geocoded_waypoints[], her biri kaynak, hedef ve ara noktaların coğrafi kodlaması hakkında ayrıntılar içeren bir DirectionsGeocodedWaypoint nesne dizisi içerir.
  • routes[], DirectionsRoute nesne dizisi içeriyor. Her rota, başlangıç noktasından DirectionsRequest içinde sağlanan hedefe giden bir yol gösterir. Genellikle isteğin provideRouteAlternatives alanı, birden fazla rota döndürülebileceği true olarak ayarlanmadığı sürece herhangi bir istek için yalnızca bir rota döndürülür.

Not: via_waypoint özelliği, alternatif rotalarda kullanımdan kaldırılmıştır. Sürüm 3.27, API'nin alternatif rotalarda ara noktalar aracılığıyla ekstra özellikler ekleyen son sürümüdür. API'nin 3.28 ve üzeri sürümleri için alternatif rotaların sürükleme özelliğini 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 rota alternatif bir rotayla eşleşene kadar ana rotayı sürükleyebilir.

Yol Tarifleri Coğrafi Kodlanmış Ara Noktalar

DirectionsGeocodedWaypoint; başlangıç noktası, hedef ve ara noktaların coğrafi kodlaması hakkında ayrıntılar içerir.

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

  • geocoder_status, coğrafi kodlama işleminden kaynaklanan durum kodunu gösterir. Bu alan aşağıdaki değerleri içerebilir.
    • "OK" hata oluşmadığını belirtir; adres başarıyla ayrıştırılır ve en az bir coğrafi kod döndürüldü.
    • "ZERO_RESULTS", coğrafi kodun başarılı olduğunu ancak sonuç döndürmediğini belirtir. Coğrafi kodlayıcı var olmayan bir address iletildiyse bu durum ortaya çıkabilir.
  • partial_match, coğrafi kodlayıcının orijinal istek için tam eşleşme döndürmediğini, ancak istenen adresin bir kısmını eşleştirebildiğini belirtir. Orijinal talebi inceleyerek yazım hataları ve/veya eksik adres olup olmadığını kontrol edebilirsiniz.

    Kısmi eşleşmeler çoğunlukla istekte ilettiğiniz konum içinde bulunmayan açık adresler için ortaya çıkar. Bir istek aynı konumdaki iki veya daha fazla konumla eşleştiğinde de kısmi eşleşmeler döndürülebilir. Örneğin, "İstiklal, İstanbul, Türkiye" olsun, İstanbul Caddesi ve Üsküdar için kısmen eşleşme döndürülür. İstek yanlış yazılmış bir adres bileşeni içeriyorsa coğrafi kodlama hizmetinin alternatif bir adres önerebileceğini unutmayın. Bu şekilde tetiklenen öneriler de kısmi eşleşme olarak işaretlenir.

  • place_id, bir yerin benzersiz tanımlayıcısıdır ve diğer Google API'leriyle birlikte kullanılabilir. Örneğin, yerel bir işletmeyle ilgili telefon numarası, çalışma saatleri, kullanıcı yorumları vb. ayrıntıları almak için place_id uygulamasını Google Places API kitaplığıyla birlikte kullanabilirsiniz. Yer kimliğine genel bakış konusuna göz atın.
  • 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 sıfır veya daha fazla etiket kümesi içerir. Örneğin, "Chicago"nun coğrafi kodu, "Chicago"nun bir şehir olduğunu belirten "locality" değerini ve aynı zamanda "political" (siyasi) değerini döndürür.

Yol Tarifi Rotaları

Not: Eski DirectionsTrip nesnesi DirectionsRoute olarak yeniden adlandırıldı. Rotanın artık bir ebeveyn seyahatinin sadece bir ayağını değil, yolculuğun başlangıcından bitişine kadar olan kısmını ifade ettiğini unutmayın.

DirectionsRoute, belirtilen kaynak ve hedeften tek bir sonucu içerir. Bu rota, herhangi bir ara nokta belirtilip belirtilmediğine bağlı olarak bir veya daha fazla ayaktan (DirectionsLeg türünde) oluşabilir. Rotada ayrıca yönlendirme bilgilerinin yanı sıra kullanıcıya gösterilmesi gereken telif hakkı ve uyarı bilgileri de bulunur.

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

  • legs[], rotanın bir ayağıyla ilgili bilgileri içeren DirectionsLeg nesne dizisi içerir. Bu nesnelerin her biri, belirtilen rotadaki iki konumdan alınmış rotanın bir ayağıyla ilgili bilgiler içerir. Belirtilen her bir referans noktası veya hedef için ayrı bir ayak mevcut olacaktır. (Ara noktası olmayan bir rota tam olarak bir DirectionsLeg içerir.) Her bacak DirectionStep dizisinden oluşur.
  • waypoint_order, hesaplanan rotadaki tüm ara noktaların sırasını gösteren bir dizi içerir. DirectionsRequest parametresi optimizeWaypoints: true iletildiyse bu dizi, değiştirilmiş bir sıra içerebilir.
  • overview_path, sonuçta ortaya çıkan yol tariflerinin yaklaşık (düzgünleştirilmiş) yolunu temsil eden bir LatLng dizisi içerir.
  • overview_polyline, rotanın kodlanmış çoklu çizgi temsilini barındıran tek bir points nesnesi içerir. Bu çoklu çizgi, sonuçta ortaya çıkan yönlerin yaklaşık (düzgünleştirilmiş) bir yoludur.
  • bounds, bu rota üzerindeki çoklu çizginin sınırlarını gösteren bir LatLngBounds içeriyor.
  • copyrights, bu rota için görüntülenecek telif hakkı metnini içerir.
  • warnings[], bu yol tarifleri gösterilirken görüntülenecek bir dizi uyarı içerir. Sağlanan DirectionsRenderer nesnesini kullanmazsanız bu uyarıları kendiniz işlemeniz ve göstermeniz gerekir.
  • fare, rotadaki toplam ücreti (yani toplam bilet maliyetlerini) içerir. Bu tesis, yalnızca toplu taşıma istekleri için ve yalnızca tüm toplu taşıma ayakları için ücret bilgilerinin bulunduğu rotalar için döndürülür. 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 Ayakları

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

DirectionsLeg, hesaplanan rotadaki kalkış noktasından hedefe giden bir yolculuğun tek ayağını tanımlar. Ara nokta içermeyen rotalar için rota tek bir "bacaktan" oluşur ancak bir veya daha fazla ara nokta tanımlayan rotalar için rota, yolculuğun belirli ayaklarına karşılık gelen bir veya daha fazla ayaktan oluşur.

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

  • steps[], yolculuğun her bir adımıyla ilgili bilgileri gösteren bir DirectionsStep nesne dizisi içerir.
  • distance, bu bacağın katettiği toplam mesafeyi aşağıdaki biçimin Distance nesnesi olarak gösterir:

    • value, mesafeyi metre cinsinden gösterir
    • text, mesafenin dize temsilini içerir. Bu değer varsayılan olarak, kaynakta kullanılan birimler halinde gösterilir. (Örneğin, ABD'deki herhangi bir kalkış noktası için mil kullanılır.) Orijinal sorguda özel olarak bir UnitSystem ayarlayarak bu birim sistemini geçersiz kılabilirsiniz. Kullandığınız birim sisteminden bağımsız olarak distance.value alanının her zaman metre cinsinden ifade edilen bir değer içerdiğini unutmayın.

    Mesafe bilinmiyorsa bu alanlar tanımlanmamış olabilir.

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

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

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

  • duration_in_traffic, mevcut trafik koşulları dikkate alınarak bu adımın toplam süresini gösterir. duration_in_traffic, yalnızca aşağıdakilerin tümü doğruysa döndürülür:

    • İstek, ara durak noktaları içermiyor. Yani stopover, true olduğunda ara noktaları içermez.
    • İstek özellikle arabayla yol tarifi için geliyor. mode, driving olarak ayarlandı.
    • departureTime, istekteki drivingOptions alanının bir parçası olarak eklenir.
    • İstenen rotanın trafik koşulları mevcut.

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

    • value süreyi saniye cinsinden gösterir.
    • text, sürenin kullanıcılar tarafından okunabilen bir temsilini içerir.
  • arrival_time, bu ayak için tahmini varış zamanını içerir. Bu tesis yalnızca toplu taşıma yol tariflerinde döndürülür. Sonuç, üç özelliğe sahip bir Time nesnesi olarak döndürülür:
    • value JavaScript Date nesnesi olarak belirtilen saat.
    • text zaman dize olarak belirtilir. Saat, toplu taşıma durağının saat diliminde gösterilir.
    • time_zone, bu istasyonun saat dilimini içerir. Değer, IANA Saat Dilimi Veritabanı'nda tanımlandığı üzere saat diliminin adıdır (ör. "America/New_York").
  • departure_time, bu ayak için tahmini kalkış saatini içerir ve Time nesnesi olarak belirtilir. departure_time yalnızca toplu taşıma yol tarifleri için kullanılabilir.
  • start_location, bu bacağın başlangıç noktasının LatLng değerini içerir. Yol Tarifi Web Hizmeti, konumlar arasındaki yol tariflerini başlangıç ve bitiş noktalarında en yakın ulaşım seçeneğini (genellikle bir yol) kullanarak hesapladığından, örneğin bir yol başlangıç noktasına yakın değilse start_location, bu bacağın belirtilen başlangıç noktasından farklı olabilir.
  • end_location, bu bacağın varış noktasının LatLng alanını içeriyor. DirectionsService, konumlar arasındaki yol tariflerini başlangıç ve varış noktalarında en yakın ulaşım seçeneğini (genellikle bir yol) kullanarak hesapladığından, örneğin bir yol hedefe yakın değilse end_location bu ayağın belirtilen hedefinden farklı olabilir.
  • start_address, bu ayağın başlangıcının okunabilir adresini (genellikle bir açık adres) içerir.

    Bu içeriğin olduğu gibi okunması amaçlanmıştır. Biçimlendirilmiş adresi programlı bir şekilde ayrıştırmayın.
  • end_address, bu bacağın sonunda okunabilir adresi (genellikle bir açık adres) içerir.

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

Yol Tarifi Adımları

DirectionsStep, bir yön rotasının en atomik birimidir. Yolculuk sırasında belirli ve tek bir talimatı açıklayan tek bir adımdan oluşur. Ör. "B konumunda sola dönün. 4. Cad." Adım, yalnızca talimatı açıklamakla kalmaz, aynı zamanda bu adımın bir sonraki adımla ne şekilde ilgili olduğuna dair mesafe ve süre bilgilerini de içerir. Örneğin, "I-80 West'e girin" şeklinde belirtilen bir adım, "37 mil" ve "40 dakika" sürelerini içerebilir. Bu durum, bir sonraki adımın bu adımdan sonra 37 mil/40 dakika olduğunu gösterir.

Toplu taşıma yol tariflerini aramak için Yol Tarifi hizmetini kullanırken, adım dizisi ek Toplu Taşımaya Özgü Bilgiler'i transit nesnesi biçiminde içerir. Yol tariflerinde birden fazla ulaşım modu varsa yaya veya arabayla yol tarifleri için steps[] dizisinde ayrıntılı yol tarifleri sağlanır. Örneğin, bir yürüyüş adımında başlangıç ve bitiş konumlarından yol tarifleri içerir: "İstiklal Caddesi'ne yürüyün". Bu adım, steps[] dizisindeki söz konusu rota için ayrıntılı yaya yol tarifleri içerir. Örneğin: "Kuzey-batıya gidin", "Alius Gezgin'e doğru sola dön" ve "Innes Bulvarı üzerinde sola dön".

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

  • instructions, bir metin dizesi içinde bu adımla ilgili talimatları içerir.
  • distance, bir sonraki adıma kadar bu adımın katettiği mesafeyi Distance nesnesi olarak içerir. (Yukarıdaki DirectionsLeg bölümünde bulunan açıklamaya bakın.) Mesafe bilinmiyorsa bu alan tanımlanmamış olabilir.
  • duration, bu adımı gerçekleştirmek için gereken tahmini süreyi, bir sonraki adıma kadar Duration nesnesi olarak içerir. (Yukarıdaki DirectionsLeg bölümünde bulunan 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 kodlu LatLng kodunu içerir.
  • end_location, bu adımın bitiş noktasının LatLng özelliğini içeriyor.
  • polyline, adımın kodlanmış çoklu çizgi temsilini barındıran tek bir points nesnesi içerir. Bu çoklu çizgi, adımın yaklaşık (düzgünleştirilmiş) bir yoludur.
  • steps[]: Toplu taşıma yol tariflerinde yaya veya arabayla yol tarifi almak için ayrıntılı yol tarifi içeren bir DirectionsStep nesne değişmez değeri. Alt adımlar yalnızca toplu taşıma yol tariflerinde 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 rotasını açıklayan bir LatLngs dizisi içerir.
  • transit, varış ve kalkış saatleri ve toplu taşıma hattının adı gibi toplu taşımaya özgü bilgileri içerir.

Toplu Taşımaya Özgü Bilgiler

Toplu taşıma yol tarifleri, diğer ulaşım modlarıyla alakalı olmayan ek bilgiler döndürür. Bu ek özellikler, DirectionsStep mülkü olarak döndürülen TransitDetails nesnesi aracılığıyla gösterilir. 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, aşağıdaki özelliklere sahip varış istasyonunu/durdurmayı temsil eden bir TransitStop nesnesi içerir:
    • name, toplu taşıma istasyonunun/durdurmanın adını belirtin. ör. "Sendika Meydanı".
    • location toplu taşıma istasyonunun/durdurmanın konumu (LatLng olarak gösterilir).
  • departure_stop, kalkış istasyonunu/durdurmayı temsil eden bir TransitStop nesnesi içeriyor.
  • arrival_time, üç özelliğe sahip bir Time nesnesi olarak belirtilen varış saatini içerir:
    • value JavaScript Date nesnesi olarak belirtilen saat.
    • text zaman dize olarak belirtilir. Saat, toplu taşıma durağının saat diliminde gösterilir.
    • time_zone, bu istasyonun saat dilimini içerir. Değer, IANA Saat Dilimi Veritabanı'nda tanımlandığı üzere saat diliminin adıdır (ör. "America/New_York").
  • departure_time, Time nesnesi olarak belirtilen kalkış saatini içerir.
  • headsign, araçta veya kalkış durağında işaretlendiği için bu hatta seyahat edilecek yönü belirtir. Bu genellikle terminal istasyonu olur.
  • headway kullanılabilir olduğunda, şu anda aynı duraktan kalkış arasında beklenen süreyi saniye cinsinden belirtir. Örneğin, headway değeri 600 ise otobüsü kaçırırsanız on dakika beklemeniz gerekir.
  • line, bu adımda kullanılan toplu taşıma hattı hakkında bilgi içeren bir TransitLine nesne değişmez değeri içerir. TransitLine, satırın adını ve operatörünü TransitLine referans dokümanlarında açıklanan diğer özelliklerle birlikte sağlar.
  • num_stops, bu adımdaki durak sayısını içerir. Kalkış durağı dahil ancak varış noktası dahil değildir. Örneğin, yol tarifiniz A Durağı'ndan kalkış, B ile C duraklarından geçip D durağına varmayı içeriyorsa num_stops, 3 değerini döndürür.

Transit Hat

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

  • name, bu toplu taşıma hattının tam adını içermektedir. Ör. "İstiklal Caddesi" ya da "Taksim Bulvarı".
  • short_name, bu toplu taşıma hattının kısa adını içeriyor. Bu, normalde "2" veya "M14" gibi bir satır numarasıdır.
  • agencies, tek bir TransitAgency nesnesi içeren dizidir. TransitAgency nesnesi, bu satırın operatörü hakkında, aşağıdaki özellikler de dahil olmak üzere bilgiler sağlar:
    • name, transit operatörünün adını içeriyor.
    • phone, transit operatörünün telefon numarasını içerir.
    • url, transit operatörünün URL'sini içeriyor.

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

  • url, bu toplu taşıma hattının transit operatörü tarafından sağlanan URL'sini içeriyor.
  • icon, bu satırla ilişkili simge için bir URL içeriyor. Çoğu şehir, araç türüne göre değişen genel simgeler kullanır. New York metro sistemi gibi bazı toplu taşıma hatlarında o hatta özel simgeler bulunur.
  • color, bu toplu taşıma aracının tabelalarında yaygın olarak kullanılan rengi içerir. Renk, #FF0033 gibi bir onaltılık dize olarak belirtilir.
  • text_color, bu satırın tabelası için yaygın olarak kullanılan metnin 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 hattaki aracın adını içerir. ör. "Metro."
    • type, bu hatta kullanılan aracın türünü içerir. Desteklenen değerlerin tam listesi için Araç Türü belgelerine bakın.
    • icon, bu araç türüyle yaygın olarak ilişkilendirilen simgenin URL'sini içerir.
    • local_icon, yerel taşımacılık tabelalarına göre bu araç türüyle ilişkili simgenin URL'sini içerir.

Araç Türü

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

Değer Tanım
VehicleType.RAIL Raylı sistem.
VehicleType.METRO_RAIL Hafif raylı taşıma.
VehicleType.SUBWAY Yer altı hafif raylı sistem.
VehicleType.TRAM Yer üstü hafif raylı sistem.
VehicleType.MONORAIL Monoray.
VehicleType.HEAVY_RAIL Ağır tren.
VehicleType.COMMUTER_TRAIN Banliyö treni.
VehicleType.HIGH_SPEED_TRAIN Hızlı tren.
VehicleType.BUS Otobüs.
VehicleType.INTERCITY_BUS Şehirler arası otobüs.
VehicleType.TROLLEYBUS Troleybüs.
VehicleType.SHARE_TAXI Paylaşımlı taksi, rotanın herhangi bir yerinde yolcu alıp alma özelliğine sahip bir otobüs türüdür.
VehicleType.FERRY Feribot.
VehicleType.CABLE_CAR Genellikle yerde, kabloyla çalışan bir taşıt. Teleferikler VehicleType.GONDOLA_LIFT türünde olabilir.
VehicleType.GONDOLA_LIFT Teleferik.
VehicleType.FUNICULAR Kabloyla dik bir yokuştan çekilen araç. Füniküler genellikle iki arabadan oluşur ve bu arabaların her biri diğeriyle karşı ağırlık görevi görür.
VehicleType.OTHER Diğer tüm araçlar bu türü döndürür.

Yol Tarifi Sonuçlarını İnceleme

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

Önemli: DirectionsRenderer nesnesini kullanmak yerine toplu taşıma yol tariflerini manuel olarak oluşturuyorsanız seyahat sonuçlarına hizmet veren toplu taşıma acentelerinin adlarını ve URL'lerini görüntülemeniz gerekir.

Aşağıdaki örnekte, New York City'deki belirli turistik yerler için yaya yol tarifi gösterilmektedir. Her adım için işaretçiler eklemek üzere rotanın DirectionsStep öğesini inceleriz ve bu adımla ilgili talimat metni içeren bir InfoWindow öğesine bilgiler ekleriz.

Not: Yaya yol tarifini hesapladığımız için tüm uyarıları kullanıcıya ayrı bir <div> panelinde de gösteririz.

var map;
var directionsRenderer;
var directionsService;
var stepDisplay;
var markerArray = [];

function initMap() {
  // Instantiate a directions service.
  directionsService = new google.maps.DirectionsService();

  // Create a map and center it on Manhattan.
  var manhattan = new google.maps.LatLng(40.7711329, -73.9741874);
  var mapOptions = {
    zoom: 13,
    center: manhattan
  }
  map = new google.maps.Map(document.getElementById('map'), mapOptions);

  // Create a renderer for directions and bind it to the map.
  var rendererOptions = {
    map: map
  }
  directionsRenderer = new google.maps.DirectionsRenderer(rendererOptions)

  // Instantiate an info window to hold step text.
  stepDisplay = new google.maps.InfoWindow();
}

function calcRoute() {

  // First, clear out any existing markerArray
  // from previous calculations.
  for (i = 0; i < markerArray.length; i++) {
    markerArray[i].setMap(null);
  }

  // Retrieve the start and end locations and create
  // a DirectionsRequest using WALKING directions.
  var start = document.getElementById('start').value;
  var end = document.getElementById('end').value;
  var request = {
      origin: start,
      destination: end,
      travelMode: 'WALKING'
  };

  // Route the directions and pass the response to a
  // function to create markers for each step.
  directionsService.route(request, function(response, status) {
    if (status == "OK") {
      var warnings = document.getElementById("warnings_panel");
      warnings.innerHTML = "" + response.routes[0].warnings + "";
      directionsRenderer.setDirections(response);
      showSteps(response);
    }
  });
}

function showSteps(directionResult) {
  // For each step, place a marker, and add the text to the marker's
  // info window. Also attach the marker to an array so we
  // can keep track of it and remove it when calculating new
  // routes.
  var myRoute = directionResult.routes[0].legs[0];

  for (var i = 0; i < myRoute.steps.length; i++) {
      var marker = new google.maps.Marker({
        position: myRoute.steps[i].start_point,
        map: map
      });
      attachInstructionText(marker, myRoute.steps[i].instructions);
      markerArray[i] = marker;
  }
}

function attachInstructionText(marker, text) {
  google.maps.event.addListener(marker, 'click', function() {
    stepDisplay.setContent(text);
    stepDisplay.open(map, marker);
  });
}

HTML gövdesinde:

<div>
<strong>Start: </strong>
<select id="start">
  <option value="penn station, new york, ny">Penn Station</option>
  <option value="grand central station, new york, ny">Grand Central Station</option>
  <option value="625 8th Avenue New York NY 10018">Port Authority Bus Terminal</option>
  <option value="staten island ferry terminal, new york, ny">Staten Island Ferry Terminal</option>
  <option value="101 E 125th Street, New York, NY">Harlem - 125th St Station</option>
</select>
<strong>End: </strong>
<select id="end" onchange="calcRoute();">
  <option value="260 Broadway New York NY 10007">City Hall</option>
  <option value="W 49th St & 5th Ave, New York, NY 10020">Rockefeller Center</option>
  <option value="moma, New York, NY">MOMA</option>
  <option value="350 5th Ave, New York, NY, 10118">Empire State Building</option>
  <option value="253 West 125th Street, New York, NY">Apollo Theatre</option>
  <option value="1 Wall St, New York, NY">Wall St</option>
</select>
<div>

Örneği görüntüleyin

Rotalarda Referans Noktaları Kullanma

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

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

  • location (zorunlu), referans noktasının adresini belirtir.
  • stopover (isteğe bağlı), bu referans noktasının rotadaki gerçek bir durak mı (true) yoksa yalnızca belirtilen konum üzerinden rotanın bir tercihi mi (false) olduğunu belirtir. Duraklamalar varsayılan olarak true şeklindedir.

Varsayılan olarak, Yol Tarifi hizmeti, sağlanan ara noktalar arasından verilen sırada bir rota hesaplar. İsteğe bağlı olarak, Yol Tarifi hizmetinin, ara noktaları daha verimli bir sırada yeniden düzenleyerek sağlanan rotayı optimize etmesine olanak tanımak için DirectionsRequest içinde optimizeWaypoints: true geçişini geçebilirsiniz. (Bu optimizasyon, seyahat eden satış görevlisi probleminin bir uygulamasıdır.) Optimize edilen birincil faktör seyahat süresidir ancak mesafe, dönüş sayısı ve en verimli rotaya karar verirken mesafe, dönüş sayısı ve birçok başka faktör göz önünde bulundurulabilir. Tüm ara noktalar, Yol Tarifi hizmetinin rotasını optimize etmek için duraklamaları olmalıdır.

Yol Tarifleri hizmetine ara noktalarının sırasını optimize etmesi için talimat verirseniz sırası DirectionsResult nesnesindeki waypoint_order alanında döndürülür.

Aşağıdaki örnekte çeşitli başlangıç noktaları, bitiş noktaları ve ara noktalar kullanılarak ABD'deki ülkeler arası rotalar hesaplanmaktadır. (Birden fazla ara nokta seçmek için, listedeki öğeleri seçerken Ctrl-Tıklama tuşlarına basın.) Her rotanın başlangıç ve bitiş noktasıyla ilgili metni bize sağlamak için routes.start_address ve routes.end_address öğelerini incelediğimizi unutmayın.

TypeScript

function initMap(): void {
  const directionsService = new google.maps.DirectionsService();
  const directionsRenderer = new google.maps.DirectionsRenderer();
  const map = new google.maps.Map(
    document.getElementById("map") as HTMLElement,
    {
      zoom: 6,
      center: { lat: 41.85, lng: -87.65 },
    }
  );

  directionsRenderer.setMap(map);

  (document.getElementById("submit") as HTMLElement).addEventListener(
    "click",
    () => {
      calculateAndDisplayRoute(directionsService, directionsRenderer);
    }
  );
}

function calculateAndDisplayRoute(
  directionsService: google.maps.DirectionsService,
  directionsRenderer: google.maps.DirectionsRenderer
) {
  const waypts: google.maps.DirectionsWaypoint[] = [];
  const checkboxArray = document.getElementById(
    "waypoints"
  ) as HTMLSelectElement;

  for (let i = 0; i < checkboxArray.length; i++) {
    if (checkboxArray.options[i].selected) {
      waypts.push({
        location: (checkboxArray[i] as HTMLOptionElement).value,
        stopover: true,
      });
    }
  }

  directionsService
    .route({
      origin: (document.getElementById("start") as HTMLInputElement).value,
      destination: (document.getElementById("end") as HTMLInputElement).value,
      waypoints: waypts,
      optimizeWaypoints: true,
      travelMode: google.maps.TravelMode.DRIVING,
    })
    .then((response) => {
      directionsRenderer.setDirections(response);

      const route = response.routes[0];
      const summaryPanel = document.getElementById(
        "directions-panel"
      ) as HTMLElement;

      summaryPanel.innerHTML = "";

      // For each route, display summary information.
      for (let i = 0; i < route.legs.length; i++) {
        const routeSegment = i + 1;

        summaryPanel.innerHTML +=
          "<b>Route Segment: " + routeSegment + "</b><br>";
        summaryPanel.innerHTML += route.legs[i].start_address + " to ";
        summaryPanel.innerHTML += route.legs[i].end_address + "<br>";
        summaryPanel.innerHTML += route.legs[i].distance!.text + "<br><br>";
      }
    })
    .catch((e) => window.alert("Directions request failed due to " + status));
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

function initMap() {
  const directionsService = new google.maps.DirectionsService();
  const directionsRenderer = new google.maps.DirectionsRenderer();
  const map = new google.maps.Map(document.getElementById("map"), {
    zoom: 6,
    center: { lat: 41.85, lng: -87.65 },
  });

  directionsRenderer.setMap(map);
  document.getElementById("submit").addEventListener("click", () => {
    calculateAndDisplayRoute(directionsService, directionsRenderer);
  });
}

function calculateAndDisplayRoute(directionsService, directionsRenderer) {
  const waypts = [];
  const checkboxArray = document.getElementById("waypoints");

  for (let i = 0; i < checkboxArray.length; i++) {
    if (checkboxArray.options[i].selected) {
      waypts.push({
        location: checkboxArray[i].value,
        stopover: true,
      });
    }
  }

  directionsService
    .route({
      origin: document.getElementById("start").value,
      destination: document.getElementById("end").value,
      waypoints: waypts,
      optimizeWaypoints: true,
      travelMode: google.maps.TravelMode.DRIVING,
    })
    .then((response) => {
      directionsRenderer.setDirections(response);

      const route = response.routes[0];
      const summaryPanel = document.getElementById("directions-panel");

      summaryPanel.innerHTML = "";

      // For each route, display summary information.
      for (let i = 0; i < route.legs.length; i++) {
        const routeSegment = i + 1;

        summaryPanel.innerHTML +=
          "<b>Route Segment: " + routeSegment + "</b><br>";
        summaryPanel.innerHTML += route.legs[i].start_address + " to ";
        summaryPanel.innerHTML += route.legs[i].end_address + "<br>";
        summaryPanel.innerHTML += route.legs[i].distance.text + "<br><br>";
      }
    })
    .catch((e) => window.alert("Directions request failed due to " + status));
}

window.initMap = initMap;

Referans Noktalarına İlişkin Sınırlar ve Kısıtlamalar

Aşağıdaki kullanım sınırları ve kısıtlamalar geçerlidir:

  • Maps JavaScript API'de Yol Tarifi hizmeti kullanılırken izin verilen maksimum ara nokta sayısı, başlangıç noktası ve hedefi olmak üzere 25'tir. Sınırlar, Directions API web hizmeti için aynıdır.
  • Directions API web hizmeti için müşterilere, ek olarak 25 ara nokta ve başlangıç noktası ile birlikte izin verilir.
  • Google Haritalar Platformu Premium Planı müşterilerine, 25 ara nokta ile birlikte kalkış ve varış noktalarına izin verilir.
  • Toplu taşıma yol tariflerinde ara noktalar desteklenmez.

Sürüklenebilir Yol Tarifleri

Kullanıcılar, sürüklenebilir olmaları durumunda DirectionsRenderer kullanarak görüntülenen bisiklet, yürüyüş veya arabayla yol tariflerini dinamik olarak değiştirebilirler. Böylece kullanıcılar, haritada görünen yolları tıklayıp sürükleyerek rotaları seçebilir ve değiştirebilir. Bir oluşturucunun draggable özelliğini true değerine ayarlayarak ekranının sürüklenebilir yol tariflerine izin verip vermediğini belirtirsiniz. Toplu taşıma yol tarifleri sürüklenebilir hale getirilemez.

Yol tarifleri sürüklenebilir olduğunda kullanıcı, oluşturulan sonucun yolunda (veya referans noktası) üzerindeki herhangi bir noktayı seçebilir ve belirtilen bileşeni yeni bir konuma taşıyabilir. DirectionsRenderer, değiştirilen yolu göstermek için dinamik olarak güncellenir. Yayınlandığında, haritaya bir geçiş referans noktası eklenir (küçük beyaz bir işaretçiyle gösterilir). Bir yol segmentinin seçilmesi ve taşınması, rotanın ilgili ayağını değiştirir. Bir referans noktası işaretçisini (başlangıç ve bitiş noktaları dahil) seçip taşımak, rotanın söz konusu ara noktadan geçen ayaklarını değiştirir.

Sürüklenebilir yol tarifleri istemci tarafında değiştirildiği ve istemci tarafında oluşturulduğu için kullanıcı görüntülenen yol tariflerini değiştirdiğinde bilgi almak üzere DirectionsRenderer'daki directions_changed etkinliğini izleyip işleyebilirsiniz.

Aşağıdaki kod, Avustralya'nın batı kıyısındaki Perth'ten doğu yakasındaki Sidney'e yapılan bir seyahati göstermektedir. Kod, yolculuğun tüm ayaklarının toplam mesafesini güncellemek için directions_changed etkinliğini izler.

TypeScript

function initMap(): void {
  const map = new google.maps.Map(
    document.getElementById("map") as HTMLElement,
    {
      zoom: 4,
      center: { lat: -24.345, lng: 134.46 }, // Australia.
    }
  );

  const directionsService = new google.maps.DirectionsService();
  const directionsRenderer = new google.maps.DirectionsRenderer({
    draggable: true,
    map,
    panel: document.getElementById("panel") as HTMLElement,
  });

  directionsRenderer.addListener("directions_changed", () => {
    const directions = directionsRenderer.getDirections();

    if (directions) {
      computeTotalDistance(directions);
    }
  });

  displayRoute(
    "Perth, WA",
    "Sydney, NSW",
    directionsService,
    directionsRenderer
  );
}

function displayRoute(
  origin: string,
  destination: string,
  service: google.maps.DirectionsService,
  display: google.maps.DirectionsRenderer
) {
  service
    .route({
      origin: origin,
      destination: destination,
      waypoints: [
        { location: "Adelaide, SA" },
        { location: "Broken Hill, NSW" },
      ],
      travelMode: google.maps.TravelMode.DRIVING,
      avoidTolls: true,
    })
    .then((result: google.maps.DirectionsResult) => {
      display.setDirections(result);
    })
    .catch((e) => {
      alert("Could not display directions due to: " + e);
    });
}

function computeTotalDistance(result: google.maps.DirectionsResult) {
  let total = 0;
  const myroute = result.routes[0];

  if (!myroute) {
    return;
  }

  for (let i = 0; i < myroute.legs.length; i++) {
    total += myroute.legs[i]!.distance!.value;
  }

  total = total / 1000;
  (document.getElementById("total") as HTMLElement).innerHTML = total + " km";
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

function initMap() {
  const map = new google.maps.Map(document.getElementById("map"), {
    zoom: 4,
    center: { lat: -24.345, lng: 134.46 }, // Australia.
  });
  const directionsService = new google.maps.DirectionsService();
  const directionsRenderer = new google.maps.DirectionsRenderer({
    draggable: true,
    map,
    panel: document.getElementById("panel"),
  });

  directionsRenderer.addListener("directions_changed", () => {
    const directions = directionsRenderer.getDirections();

    if (directions) {
      computeTotalDistance(directions);
    }
  });
  displayRoute(
    "Perth, WA",
    "Sydney, NSW",
    directionsService,
    directionsRenderer,
  );
}

function displayRoute(origin, destination, service, display) {
  service
    .route({
      origin: origin,
      destination: destination,
      waypoints: [
        { location: "Adelaide, SA" },
        { location: "Broken Hill, NSW" },
      ],
      travelMode: google.maps.TravelMode.DRIVING,
      avoidTolls: true,
    })
    .then((result) => {
      display.setDirections(result);
    })
    .catch((e) => {
      alert("Could not display directions due to: " + e);
    });
}

function computeTotalDistance(result) {
  let total = 0;
  const myroute = result.routes[0];

  if (!myroute) {
    return;
  }

  for (let i = 0; i < myroute.legs.length; i++) {
    total += myroute.legs[i].distance.value;
  }

  total = total / 1000;
  document.getElementById("total").innerHTML = total + " km";
}

window.initMap = initMap;
Örneği görüntüleyin

Örneği Deneyin