Yol Tarifi Hizmeti

Genel bakış

Yol tariflerini DirectionsService nesnesini kullanarak (çeşitli ulaşım yöntemlerini kullanarak) hesaplayabilirsiniz. Bu nesne, yol tarifi istekleri alan ve verimli bir yol döndüren Google Maps API Directions Hizmeti ile iletişim kurar. Optimize edilen birincil faktör seyahat süresidir ancak mesafe, dönüş sayısı ve diğer birçok etmen dikkate alınabilir. Bu yol tarifi sonuçlarını kendiniz işleyebilir veya bu sonuçları oluşturmak için DirectionsRenderer nesnesini kullanabilirsiniz.

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

Yol Tarifi hizmeti, bir dizi referans noktası kullanarak çok parçalı yol tarifleri döndürebilir. Yol tarifi bir harita üzerinde rota çizen bir çoklu çizgi ya da bir <div> öğesi içinde yazılı metin serisi olarak görüntülenir (örneğin, "Wandasburg Köprüsü rampasına doğru sağa dönme").

Başlarken

Maps JavaScript API'de Directions hizmetini kullanmadan önce, Maps API'si için yapılandırdığınız projede Directions API'nin Google Cloud Console'da 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 her şey hazır demektir. API listelenmiyorsa etkinleştirin:
    1. Kitaplık sekmesini görüntülemek için sayfanın üst kısmından API'Yİ ETKİNLEŞTİR'i seçin. Alternatif olarak sol taraftaki menüden Kitaplık'ı da seçebilirsiniz.
    2. Directions API'yi arayın, ardından sonuçlar listesinden API'yi seçin.
    3. ETKİNLEŞTİR'i seçin. Süreç tamamlandığında Directions API, Kontrol Paneli'nde API'ler listesinde görünür.

Fiyatlandırma ve politikalar

Fiyatlandırma

16 Temmuz 2018'den itibaren Haritalar, Rotalar ve Yerler için yeni bir kullandıkça öde fiyatlandırma planı kullanıma sunuldu. JavaScript Directions hizmetini kullanımınızla ilgili yeni fiyatlandırma ve kullanım sınırları hakkında daha fazla bilgi edinmek için Directions API'ye yönelik Kullanım ve Faturalandırma bölümüne bakın.

Politikalar

Directions hizmetinin kullanımı, Directions API'ye yönelik politikalara uygun olmalıdır.

Yol Tarifi İstekleri

Google Haritalar API'sinin harici bir sunucuya çağrıda bulunması 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, ayrı routes[] dizisi olarak birden fazla olası seyahat planı döndürebileceğini unutmayın.

Maps JavaScript API'de yol tariflerini kullanmak için DirectionsService türünde bir nesne oluşturun ve Yol Tarifi hizmetine istek başlatmak için DirectionsService.route() çağrısı yapın. Bu nesneye, giriş şartları ve yanıt alındığında yürütülecek bir geri çağırma yöntemi içeren bir DirectionsRequest nesne dizesi aktarılır.

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. Yer nesnesi kullanıyorsanız yer kimliği, sorgu dizesi veya LatLng konumu belirtebilirsiniz. Maps JavaScript API'deki Yer Kodlama, Yer Arama ve Yer Otomatik Tamamlama hizmetlerinden yer kimlikleri alabilirsiniz. Yer Otomatik Tamamlama'daki yer kimliklerini kullanan bir örnek için Yer Otomatik Tamamlama ve Yol Tarifi bölümüne bakın.
  • destination (zorunlu), yol tariflerinin hesaplanacağı son konumu belirtir. Seçenekler, yukarıda açıklanan origin alanı ile 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 TRANSIT olan 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 DRIVING olan istekler için geçerli olan değerleri belirtir. Geçerli değerler, aşağıdaki Sürüş Seçenekleri bölümünde açıklanmıştır.
  • unitSystem (isteğe bağlı), sonuçları gösterirken kullanılacak birim sistemini belirtir. Geçerli değerler aşağıdaki Birim Sistemleri bölümünde belirtilmiştir.

  • waypoints[] (isteğe bağlı), DirectionsWaypoint dizisini belirtir. Güzergah noktaları, bir rotayı belirtilen konumlardan yönlendirerek değişir. Referans noktası, aşağıda gösterilen alanlarla 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 bir String olarak belirtir.
    • stopover, ara noktanın rotadaki bir durak olduğunu gösteren bir booledir. Rota, rotayı iki rotaya bölmenin etkisini gösterir.

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

  • optimizeWaypoints (isteğe bağlı), sağlanan waypoints kullanılarak rotanın daha verimli bir sırada yeniden düzenlenmesi yoluyla optimize edilebileceğini belirtir. true ise Yol Tarifi hizmeti, waypoint_order alanındaki yeniden sıralanmış waypoints alanını döndürür.(Daha fazla bilgi için aşağıdaki Güzergahlarda Referans Noktaları Kullanma konusuna bakın.)
  • provideRouteAlternatives (isteğe bağlı), true olarak ayarlandığında Yol Tarifi hizmetinin yanıtta birden fazla rota alternatifi sağlayabileceğini belirtir. Rota alternatifleri sağlamanın, sunucudan gelen yanıt süresini artırabileceğini unutmayın. Bu seçenek yalnızca ara noktaları olmayan istekler için kullanılabilir.
  • avoidFerries (isteğe bağlı), true olarak ayarlandığında hesaplanmış rotaların mümkünse feribotlardan kaçınması gerektiğini belirtir.
  • avoidHighways (isteğe bağlı), true olarak ayarlandığında, hesaplanan rotaların mümkünse ana otoyollardan kaçınması gerektiğini belirtir.
  • avoidTolls (isteğe bağlı), true olarak ayarlandığında hesaplanan rotaların mümkünse ücretli yol kullanmaması 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 örnek bir DirectionsRequest verilmiştir:

{
  origin: 'Chicago, IL',
  destination: 'Los Angeles, CA',
  waypoints: [
    {
      location: 'Joplin, MO',
      stopover: false
    },{
      location: 'Oklahoma City, OK',
      stopover: true
    }],
  provideRouteAlternatives: false,
  travelMode: 'DRIVING',
  drivingOptions: {
    departureTime: new Date(/* now, or future date */),
    trafficModel: 'pessimistic'
  },
  unitSystem: google.maps.UnitSystem.IMPERIAL
}

Ulaşım Şekli

Yol tariflerini hesaplarken, hangi ulaşım şeklini kullanacağınızı 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 sokaklar üzerinden bisiklet için yol tarifi istiyor.
  • TRANSIT, toplu taşıma rotaları aracılığıyla yol tarifi istiyor.
  • WALKING, yaya yolları ve kaldırımlar üzerinden yaya yol tarifi ister.

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

Not: Yaya yol tarifleri, yayalara özel net olmayan yollar içerebilir. Bu nedenle, yaya yol tarifleri DirectionsResult içinde uyarı verir. Bu uyarılar her zaman kullanıcıya gösterilmelidir. Varsayılan DirectionsRenderer kullanmıyorsanız uyarıların görüntülenmesini sağlamak sizin sorumluluğunuzdadır.

Toplu Taşıma Seçenekleri

Yol tarifi isteği için kullanılabilecek seçenekler, ulaşım şekillerine göre değişir. Toplu taşıma yol tarifi istediğinizde avoidHighways, avoidTolls, waypoints[] ve optimizeWaypoints seçenekleri dikkate alınmaz. TransitOptions nesne değişmez değeri üzerinden toplu taşımaya özel yönlendirme seçeneklerini belirtebilirsiniz.

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

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

{
  arrivalTime: Date,
  departureTime: Date,
  modes[]: TransitMode,
  routingPreference: TransitRoutePreference
}

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

  • arrivalTime (isteğe bağlı), Date nesnesi olarak istenen varış zamanını belirtir. Varış saati belirtilirse kalkış saati yoksayılır.
  • departureTime (isteğe bağlı), Date nesnesi olarak istenen kalkış saatini belirtir. arrivalTime belirtilirse departureTime yok sayılır. departureTime veya arrivalTime için 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 seyahati tercih etmesi gerektiğini belirtir.
    • RAIL, hesaplanan rotanın tren, tramvay, hafif raylı sistem ve metroyla seyahati tercih etmesi gerektiğini belirtir.
    • SUBWAY, hesaplanan rotanın metroyla seyahati tercih etmesi gerektiğini belirtir.
    • TRAIN, hesaplanan rotanın trenle seyahati tercih etmesi gerektiğini belirtir.
    • TRAM, hesaplanan rotanın tramvay ve hafif raylı sistemle 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 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ı miktarda yürüyüşü tercih etmesi gerektiğini belirtir.

Aşağıda, toplu taşıma bazında DirectionsRequest örneği verilmiş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 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ğerin mevcut saate veya gelecekteki bir zamana ayarlanması gerekir. Geçmiş bir tarih seçilemez. (API, saat dilimleri arasında tutarlı bir işleme süreci için tüm tarihleri UTC'ye dönüştürür.) Google Haritalar Platformu Premium Plan müşterileri için isteğe departureTime özelliğini eklerseniz API, o sırada beklenen trafik koşulları göz önünde bulundurularak 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 koşulları dikkate alınmadan genellikle iyi bir rotadır.
  • trafficModel (isteğe bağlı), trafikteki zamanı hesaplarken kullanılacak varsayımları belirtir. Bu ayar, geçmiş ortalamalara göre trafikteki tahmini süreyi içeren yanıttaki duration_in_traffic alanında döndürülen değeri etkiler. Varsayılan olarak bestguess değerine ayarlanır. Aşağıdaki değerlere izin verilir:
    • bestguess (varsayılan), hem geçmiş trafik koşulları hem de canlı trafik bilgileri açısından, döndürülen duration_in_traffic özelliğinin seyahat süresi için en iyi tahmin olması gerektiğini belirtir. departureTime ne kadar yakınsa canlı trafik o kadar önemli hale gelir.
    • pessimistic, döndürülen duration_in_traffic öğesinin çoğu gündeki gerçek seyahat süresinden daha uzun olması gerektiğini belirtir. Ancak nadiren kötü trafik koşulları olan günler bazen bu değeri aşabilir.
    • optimistic, döndürülen duration_in_traffic gününün gerçek günlere kıyasla daha kısa sürdüğünü gösterir. Ancak bazen iyi trafik koşullarına sahip olan 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, menşe ülke veya bölgenin birim sistemi kullanılarak hesaplanır ve gösterilir. (Not: Kaynaklar, varsayılan olarak her zaman metrik birimleri olan enlem/boylam koordinatları kullanılarak belirtilir.) Örneğin, "Chicago, IL" - "Toronto, ONT" arası bir rota, sonuçları mil cinsinden, ters rota ise kilometre olarak gösterir. Aşağıdaki UnitSystem değerlerinden birini kullanarak istek içinde açıkça bir birim ayarlayarak bu birim sistemini geçersiz kılabilirsiniz:

  • UnitSystem.METRIC, metrik sisteminin kullanımını belirtir. Mesafeler, kilometreler kullanılarak gösterilir.
  • UnitSystem.IMPERIAL, İngiliz (İngilizce) sisteminin kullanımını belirtir. Mesafeler, miller kullanılarak gösterilir.

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

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

Google Maps API Yol Tarifi Hizmeti, JavaScript önyüklemesini yüklediğiniz alan (bölge veya ülke) tarafından etkilenen adres sonuçlarını döndürür. (Çoğu kullanıcı https://maps.googleapis.com/ yüklediğinden, ABD'ye dolaylı alan adı verilir.) Önyüklemeyi desteklenen farklı bir alandan yüklerseniz söz konusu alandan etkilenen sonuçları alırsınız. Örneğin, "San Francisco" araması, http://maps.google.es/ (İspanya) yüklenen bir uygulamadan farklı sonuçlar (https://maps.googleapis.com/ (ABD)) döndürebilir.

region parametresini kullanarak Yol Tarifi hizmetini, belirli bir bölgeye ağırlık veren sonuçları döndürecek şekilde de ayarlayabilirsiniz. Bu parametre, iki karakterli (sayısal olmayan) Unicode bölge alt etiketi olarak belirtilen bir bölge kodu alır. Çoğu durumda bu etiketler doğrudan "co.uk" içindeki "uk" gibi iki karakterli değerlerle ccTLD'yi ("üst düzey alan") eşleştirir. Bazı durumlarda region etiketi, ccTLD değerlerinden farklı olan ISO-3166-1 kodlarını da destekler (ör. "İ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şler hataya neden olur.

Bölgeye ağırlık verme yalnızca yol tarifini 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.

Oluşturma Talimatları

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

Yol Tarifi Sorgusunun Durumu

DirectionsStatus aşağıdaki değerleri döndürebilir:

  • OK, yanıtın geçerli bir DirectionsResult içerdiğini gösterir.
  • NOT_FOUND, isteğin kaynağı, hedefi veya ara noktalarında belirtilen konumlardan en az birinin coğrafi kodlamanın yapılamadığını belirtir.
  • ZERO_RESULTS, kalkış 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 gösteriyor. Bu hata, daha karmaşık yol tarifleri döndürülürken ortaya çıkar. Ara nokta, dönüş veya talimat sayısını azaltmayı deneyin.
  • INVALID_REQUEST, sağlanan DirectionsRequest parametresinin geçersiz olduğunu gösterir. Bu hata kodunun en yaygın nedenleri, kaynak veya hedef açısından eksik olan ya da referans noktası içeren bir toplu taşıma isteğidir.
  • OVER_QUERY_LIMIT, web sayfasının izin verilen süre içinde çok fazla istek gönderdiğini belirtir.
  • REQUEST_DENIED, web sayfasının yol tarifi hizmetini kullanmasına izin verilmediğini belirtir.
  • UNKNOWN_ERROR, yol tarifi isteğinin bir sunucu hatası nedeniyle işlenemediğini gösteriyor. Tekrar denediğinizde 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 olmalısınız.

DirectionsResult'ı görüntüleme

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

DirectionsRenderer kullanarak 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() işlevini çağırın.
  3. Oluşturucuda setDirections() kodunu çağırıp yukarıda belirtildiği gibi DirectionsResult iletir. 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, Rota 66'daki iki konum arasındaki yol tarifleri hesaplanmıştır. Kaynak, varış noktası ve açılır listelerdeki belirli "start" ve "end" değerleri tarafından belirlenir. DirectionsRenderer, birden fazla çizginin belirtilen konumlar arasında ve kaynak, hedef ve herhangi bir ara noktadaki işaretçilerin yerleşimini gösterir.

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 şekilleri kullanılmaktadır.

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 görüntülemekle kalmaz, aynı zamanda bir dizi adım olarak yol tariflerinin metinsel görünümünü de işleyebilir. Bunu yapmak için DirectionsRenderer cihazınızda setPanel() numarasını arayarak bu bilgilerin gösterileceği <div> bilgisini iletin. Bunu yaptığınızda, ilgili telif hakkı bilgilerini ve sonuçla ilişkilendirilebilecek uyarıları da 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 kullanılarak sağlanır. (Daha fazla bilgi için Yerelleştirme bölümünü inceleyin.) Toplu taşıma yol tarifleri söz konusu olduğunda saat, toplu taşıma durağının bulunduğu saat diliminde gösterilir.

Aşağıdaki örnek, yukarıda gösterilenlerle aynıdır ancak yol tariflerinin gösterileceği bir <div> paneli içerir:

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

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

HTML gö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 hizmetine yol tarifi isteği gönderirken durum kodundan ve sonuçtan (DirectionsResult nesnesi) 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 referans noktalarının coğrafi kodlamasını yapan ayrıntıları içeren bir DirectionsGeocodedWaypoint nesnesinden oluşur.
  • routes[], DirectionsRoute nesnelerinden oluşan bir dizi içeriyor. Her rota, kalkış noktasından DirectionsRequest bölgesinde sağlanan hedefe ulaşmanın yolunu gösterir. İsteğin provideRouteAlternatives alanı true olarak ayarlanmadığı sürece, belirli bir istek için genellikle yalnızca bir rota döndürülür. Bu durumda birden fazla rota döndürülebilir.

Not: via_waypoint özelliği, alternatif rotalarda kullanımdan kaldırılır. Sürüm 3.27, API'nin alternatif rotalardaki ara noktalarla eklenen yeni sürümüdür. API'nin 3.28 ve sonraki sürümleri için, Alternatif rotaları sürüklemeyi 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ükleyebilir.

Coğrafi Yol Tarifi Ara Noktalar

DirectionsGeocodedWaypoint, kaynak, hedef ve referans noktalarının coğrafi kodlaması hakkında bilgiler 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 olmadığını, adresin başarıyla ayrıştırıldığını ve en az bir coğrafi kodlamanın döndürüldüğünü gösterir.
    • "ZERO_RESULTS", coğrafi kodlamanın başarılı olduğunu ancak hiçbir sonuç döndürmediğini belirtir. Bu durum, coğrafi kodlamanın mevcut olmayan bir address'dan geçirilmesi durumunda gerçekleşebilir.
  • partial_match, coğrafi kodlamanın orijinal istek için tam eşleşme döndürmediğini, ancak istenen adresin bir kısmıyla eşleşebildiğini belirtir. Yazım yanlışları ve/veya eksik adresle ilgili orijinal isteği inceleyebilirsiniz.

    Kısmi eşleşmeler çoğunlukla istekte ilettiğiniz bölgede bulunmayan sokak adresleri 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" hem Henry Street hem de Henrietta Street için kısmi bir eşleşme döndürecektir. Bir istekte yanlış yazılmış adres bileşeni varsa, coğrafi kodlama hizmetinin alternatif bir adres önerebileceğini unutmayın. Bu şekilde tetiklenen öneriler de kısmi eşleşme olarak işaretlenir.

  • place_idBir yerin benzersiz tanımlayıcısıdır ve diğer Google API'leriyle kullanılabilir. Örneğin, yerel bir işletmenin telefon numarası, çalışma saatleri, kullanıcı yorumları gibi ayrıntılarını almak için place_id ile Google Yerler API'si kitaplığını kullanabilirsiniz. Yer kimliğine genel bakış bölümünü inceleyin.
  • types[], döndürülen sonucun türünü belirten bir dizidir. Bu dizi, sonuçta döndürülen özelliğin türünü tanımlayan sıfır veya daha fazla etiket kümesi içerir. Örneğin, "Chicago"nun coğrafi kodlama kodu, "Chicago"nun bir şehir olduğunu belirten "locality", aynı zamanda siyasi bir tüzel kişi olduğunu belirten "politik" ifadesini döndürür.

Yol Tarifi Rotaları

Not: Eski DirectionsTrip nesnesi DirectionsRoute olarak yeniden adlandırıldı. Güzergahın, ebeveyn yolculuğunun yalnızca bir ayağı yerine, baştan sona yolculuğun tamamını ifade ettiğini unutmayın.

DirectionsRoute öğesi, belirtilen kaynak ve hedeften alınan tek bir sonucu içerir. Rotalar belirtilmeye bağlı olarak bu rota bir veya daha fazla bacaktan (DirectionsLeg türünde) oluşabilir. Ayrıca, rota, rota bilgilerine ek olarak kullanıcıya gösterilmesi gereken telif hakkı ve uyarı bilgilerini de içerir.

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

  • legs[], her biri belirli bir rotadaki iki konumdan olmak üzere rotanın ayağıyla ilgili bilgiler içeren bir DirectionsLeg nesne dizisi içerir. Belirtilen her ara nokta veya hedef için ayrı bir bacak olacaktır. (Ara noktası olmayan bir rota tam olarak bir DirectionsLeg içerir.) Her ayak, bir dizi DirectionStep'dan oluşur.
  • waypoint_order, hesaplanan rotadaki referans noktalarının sırasını belirten bir dizi içerir. DirectionsRequest, optimizeWaypoints: true geçtiyse bu dizide değiştirilmiş bir sipariş olabilir.
  • overview_path, ortaya çıkan yol tariflerinin yaklaşık (yumuşatılmış) yolunu temsil eden bir LatLng dizisi içerir.
  • overview_polyline, rotanın kodlanmış çoklu çizgi temsilini tutan tek bir points nesnesi içeriyor. Bu çoklu çizgi, yol tariflerinin yaklaşık olarak (yumuşatılmış) bir yoludur.
  • bounds, bu rotadaki çoklu çizginin sınırlarını gösteren bir LatLngBounds içerir.
  • copyrights, bu rota için görüntülenecek telif hakları metnini içerir.
  • warnings[], bu yol tarifi gösterilirken görüntülenecek bir dizi uyarı içeriyor. Sağlanan DirectionsRenderer nesnesini kullanmıyorsanız bu uyarıları kendiniz yönetmeniz ve görüntülemeniz gerekir.
  • fare, bu rotadaki toplam ücreti (yani toplam bilet maliyetlerini) içerir. Bu özellik yalnızca toplu taşıma istekleri ve tüm toplu taşıma ayakları için ücret bilgilerinin bulunduğu rotalarda döndürülür. Bilgiler aşağıdakileri içerir:
    • currency: Tutarın ifade edildiği para birimini belirten ISO 4217 para birimi kodu.
    • value: Yukarıda belirtilen para biriminde toplam ücret tutarı.

Yol Tarifi Bacakları

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

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

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

  • steps[], yolculuk ayağının her bir adımıyla ilgili bilgileri gösteren bir dizi DirectionsStep nesnesi içerir.
  • distance, bu formun kapladığı toplam mesafeyi aşağıdaki biçimde bir Distance nesnesi olarak belirtir:

    • value, metre cinsinden uzaklığı belirtir
    • text, mesafenin bir dize gösterimini içerir. Bu değer, varsayılan olarak kaynakta kullanılan birimler olarak görüntülenir. (Örneğin, miller ABD'deki herhangi bir kaynak için kullanılacaktı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ımlanmayabilir.

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

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

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

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

    • Bu istek, duraklama ara noktaları içermiyor. Diğer bir deyişle, stopover değerinin true olduğu referans noktalarını içermez.
    • İstek özellikle arabayla yol tarifi için. mode ayarı driving olarak belirlenmiş.
    • departureTime, istekteki drivingOptions alanının bir parçası olarak eklenir.
    • İstenen rota için trafik koşulları mevcuttur.

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

    • value, süreyi saniye cinsinden belirtir.
    • text, sürenin kullanıcılar tarafından okunabilen bir temsilini içerir.
  • arrival_time, bu bacak için tahmini varış zamanını içeriyor. Bu mülk yalnızca toplu taşıma yol tarifleri için döndürülür. Sonuç, üç özellik içeren bir Time nesnesi olarak döndürülür:
    • value, JavaScript Date nesnesi olarak belirtilen zamanı gösterir.
    • 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ığı üzere saat diliminin adıdır (ör. "Amerika/New_York").
  • departure_time, bu ayakla ilgili tahmini kalkış saatini içerir. 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 kadarını içerir. Yol Tarifi Web Hizmeti, başlangıç ve varış 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 bir yolun kalkış noktasına yakın olmaması durumunda bu ayağın sağladığı başlangıç noktasından farklı olabilir.
  • end_location, bu bağın varış noktasının LatLng oranını 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 hesaplar. Bu nedenle örneğin bir yol, hedefe yakın değilse end_location bu bacak için sağlanan hedeften farklı olabilir.
  • start_address, bu bağın başındaki okunabilir belge adresini (genellikle açık adrestir) 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 sonunda yer alan ve kullanıcıların okuyabileceği adresi (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 tarifinin en atomik birimidir ve yolculuktaki belirli bir tek talimatı açıklayan tek bir adım içerir. Ör. "K. noktasında sola dönün 4. Cadde" Bu adım, yalnızca talimatı açıklamakla kalmaz, aynı zamanda bu adımın sonraki adımla ilişkisiyle ilgili mesafe ve süre bilgilerini de içerir. Örneğin, "I-80 Batı'da birleştirme" olarak belirtilen bir adım, "37 mil" ve "40 dakika" süreleri içerebilir. Bu da sonraki adımın bu adımdan itibaren 37 mil/40 dakika olduğunu belirtir.

Toplu taşıma yol tariflerini aramak için Yol Tarifi hizmetini kullandığınızda, adımlar dizisi transit nesnesi biçiminde ek Toplu Taşımaya Özel Bilgiler içerir. Yol tarifi birden fazla ulaşım modu içeriyorsa steps[] dizisinde yürüyüş veya arabaya yönelik adımlar için ayrıntılı yol tarifleri verilir. Örneğin, bir yürüyüş adımında başlangıç ve bitiş konumlarından yol tarifi yer alır: "Innes Ave & Fitch St. noktasına gidin". Bu adım, steps[] dizisindeki söz konusu rota için ayrıntılı yaya yol tarifleri içerir. Örneğin: "Kuzey kuzeybatıya doğru yola çıkın", "Arelious Walker'a sola dönün" ve "Innes Ave'de sola dönün".

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

  • instructions, bir metin dizesinde bu adımın talimatlarını içerir.
  • distance, bir sonraki adım olan bu adımın kapsadığı mesafeyi Distance nesnesi olarak içerir. (Yukarıdaki DirectionsLeg bölümünde sağlanan açıklamaya bakın.) Mesafe bilinmiyorsa bu alan tanımlanmamış olabilir.
  • duration, sonraki adıma kadar Duration nesnesi olarak, adımı uygulamak için gereken süreyi tahmin eder. (Yukarıdaki DirectionsLeg konusunda açıklamaya bakın.) Süre bilinmiyorsa bu alan tanımlanmamış olabilir.
  • start_location, bu adımın başlangıç noktasının coğrafi kodlamalı LatLng değerini içeriyor.
  • end_location, bu adımın bitiş noktasının LatLng değerini içerir.
  • polyline, adımın kodlanmış bir çoklu çizgisini temsil eden tek bir points nesnesi içerir. Bu çoklu çizgi, adımın yaklaşık (düzleştirilmiş) bir yoludur.
  • steps[] bir toplu taşıma yol tarifi için yaya veya arabayla yol tarifinin ayrıntılı yol tariflerini içeren 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 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şımaya özel bilgiler içerir.

Toplu Taşımaya Özel Bilgiler

Toplu taşıma yol tarifleri, diğer ulaşım modlarıyla alakalı olmayan ek bilgiler döndürür. Bu ek özellikler, DirectionsStep özelliği olarak döndürülen TransitDetails nesnesi aracılığıyla gösterilir. TransitDetails nesnesinden, aşağıda açıklandığı gibi TransitStop, TransitLine, TransitAgency ve VehicleType nesneleriyle ilgili ek bilgilere erişebilirsiniz.

Toplu Taşıma Bilgileri

TransitDetails nesnesi aşağıdaki özellikleri açığa çıkarır:

  • arrival_stop, aşağıdaki özellikleri içeren 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 toplu taşıma istasyonunun/durağın konumudur ve LatLng şeklinde temsil edilir.
  • departure_stop, kalkış istasyonunu/duruşunu 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 belirtilen zamanı gösterir.
    • 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ığı üzere saat diliminin adıdır (ör. "Amerika/New_York").
  • departure_time, Time nesnesi olarak belirtilen kalkış saatini içeriyor.
  • headsign, araçta veya kalkış noktasında levhada belirtilen bu çizgiyle gidilecek yönü belirtir. Burası çoğunlukla terminal istasyonu olacak.
  • headway kullanılabilir olduğunda, aynı noktada bulunan kalkışlar arasında beklenen saniye sayısını belirtir. Örneğin, headway değeri 600 olduğunda, otobüsü kaçırmanız durumunda on dakika beklemeniz gerekir.
  • line, bu adımda kullanılan toplu taşıma hattıyla ilgili bilgileri 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 kalkış noktası dahil değil. Örneğin, yol tarifiniz A Durağından ayrılıp B ve C duraklarından geçip D durağına vardığında num_stops 3 sonucunu döndürür.

Transit Hat

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

  • name, bu toplu taşıma hattının tam adını içerir. Ör. "7 Avenue Express" veya "14th St Crosstown".
  • short_name bu toplu taşıma hattının kısa adını içeriyor. Bu genellikle "2" veya "M14" gibi bir satır numarası olur.
  • agencies, tek bir TransitAgency nesnesi içeren bir dizidir. TransitAgency nesnesi, aşağıdaki özellikler dahil olmak üzere bu satırın operatörü hakkında bilgi sağlar:
    • name, toplu taşıma şirketinin adını içeriyor.
    • phone, toplu taşıma şirketinin telefon numarasını içerir.
    • url, toplu taşıma şirketinin URL'sini içeriyor.

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

  • url, toplu taşıma şirketi tarafından sağlanan bu toplu taşıma hattının URL'sini içerir.
  • icon bu satırla ilişkili simgenin URL'sini içerir. Çoğu şehirde, araç türüne göre farklılık gösteren genel simgeler kullanılır. New York metro gibi bazı toplu taşıma hatları bu çizgiye özgü simgeler kullanır.
  • color, bu toplu taşımanın tabelalarında yaygın olarak kullanılan rengi içerir. Renk, şu gibi bir on altılık dize olarak belirtilir: #FF0033.
  • text_color, bu satırın tabelası için yaygın olarak kullanılan metnin rengini içerir. Renk, on altılık dize olarak belirtilir.
  • vehicle, aşağıdaki özellikleri içeren bir Vehicle nesnesi içeriyor:
    • name, bu hattaki aracın adını içeriyor. ör. "Metro."
    • type, bu satırda 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 URL'sini içerir.
    • local_icon, yerel ulaşım tabelasına dayalı olarak bu araç türüyle ilişkili simgenin URL'sini içerir.

Araç Tipi

VehicleType nesnesi aşağıdaki özellikleri açığa çıkarır:

Değer Tanım
VehicleType.RAIL Demiryolu.
VehicleType.METRO_RAIL Hafif raylı toplu taşıma.
VehicleType.SUBWAY Yer altı hafif raylı sistem.
VehicleType.TRAM Yer altı hafif raylı sistem.
VehicleType.MONORAIL Monoray.
VehicleType.HEAVY_RAIL Ağır demir yolu.
VehicleType.COMMUTER_TRAIN Banliyö treni.
VehicleType.HIGH_SPEED_TRAIN Yüksek hızlı tren.
VehicleType.BUS Otobüs.
VehicleType.INTERCITY_BUS Şehirlerarası otobüs
VehicleType.TROLLEYBUS Troleybüs.
VehicleType.SHARE_TAXI Paylaşım taksisi, kendi rotasında herhangi bir yere gidip yolcu alma imkanı olan bir otobüstür.
VehicleType.FERRY Feribot.
VehicleType.CABLE_CAR Genellikle arazide bulunan ve kablo üzerinde çalışan bir araç. Teleferikler VehicleType.GONDOLA_LIFT türünde olabilir.
VehicleType.GONDOLA_LIFT Teleferik
VehicleType.FUNICULAR Kablo yardımıyla dik bir yokuşla inen araç. Füniküler genellikle iki arabadan oluşur ve her araba diğerine 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

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

Önemli: Toplu taşıma yol tariflerini DirectionsRenderer nesnesi yerine manuel olarak oluşturuyorsanız seyahat sonuçlarına hizmet veren toplu taşıma kuruluşlarının adlarını ve URL'lerini göstermeniz gerekir.

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

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

Güzergahlarda Referans Noktaları Kullanma

DirectionsRequest bölümünde belirtildiği üzere; yaya, bisiklet veya arabayla yol tarifleri için Yol Tarifi hizmetini kullanarak rotaları hesaplarken yol noktalarını (DirectionsWaypoint türünde) da belirtebilirsiniz. Toplu taşıma yol tariflerinde ara noktalar kullanılamaz. Ara noktalar, rotaları ek konumlar üzerinden hesaplamanızı sağlar. Bu durumda, döndürülen rota belirtilen belirtilen 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 konum (false) üzerinden yönlendirilmeyi mi tercih ettiğini belirtir. Duraklamalar varsayılan olarak true şeklindedir.

Varsayılan olarak, Yol Tarifi hizmeti, verilen yol tariflerindeki bir rotayı verilen sırayla hesaplar. İsteğe bağlı olarak, Yol Tarifleri hizmetinin, referans noktalarını daha verimli bir sırada yeniden ayarlayarak optimize etmesi için DirectionsRequest içinde optimizeWaypoints: true geçirebilirsiniz. (Bu optimizasyon, seyahat eden satıcı sorununun uygulanmasıdır.) Seyahat süresi optimize edilen birincil faktördür, ancak hangi rotanın en verimli olacağına karar verirken mesafe, dönüş sayısı ve diğer birçok faktör dikkate alınabilir. Rotalar hizmetinin rotasını optimize etmesi için tüm ara noktaların duraklamaları olmalıdır.

Yol Tarifi hizmetine, ara noktaların sırasını optimize etme talimatı verirseniz DirectionsResult nesnesi içindeki waypoint_order alanı sırası döndürülür.

Aşağıdaki örnekte çeşitli başlangıç noktaları, bitiş noktaları ve referans noktaları kullanılarak ABD'deki ülkeler arası rotalar hesaplanmaktadır. (Birden çok ara nokta seçmek için, listeden öğeler seçerken Ctrl-Tıklama'ya basın.) Her bir rotanın başlangıç ve bitiş noktalarının metnini bize sağlamak için routes.start_address ve routes.end_address öğelerini incelediğimizi unutmayın.

TypeScript

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

  directionsRenderer.setMap(map);

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

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

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

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

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

      summaryPanel.innerHTML = "";

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

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

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

JavaScript

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

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

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

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

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

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

      summaryPanel.innerHTML = "";

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

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

window.initMap = initMap;

Referans Noktaları için Sınırlar ve Kısıtlamalar

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

  • Maps JavaScript API'de Yol Tarifi hizmeti kullanılırken izin verilen maksimum referans noktası sayısı 25'in yanı sıra kaynak ve varış noktasıdır. Sınırlar Directions API web hizmeti için aynıdır.
  • Directions API web hizmeti için müşterilere başlangıç noktası ve hedefin yanı sıra 25 ara nokta izin verilir.
  • Google Haritalar Platformu Premium Plan müşterilerine, başlangıç noktası ve hedef olmak üzere 25 ara nokta sunulur.
  • Toplu taşıma yol tariflerinde ara noktalar desteklenmez.

Sürüklenebilir Yol Tarifi

Kullanıcılar, çekilebilirlerse DirectionsRenderer ile gösterilen bisiklet, yaya veya arabayla yol tariflerini dinamik olarak değiştirebilir. Böylece kullanıcılar, haritada gösterilen yolları tıklayıp sürükleyerek rota seçebilir ve değiştirebilir. Bir oluşturucunun ekranının sürüklenebilir yol tarifine izin verip vermediğini draggable özelliğini true olarak ayarlarsınız. Toplu taşıma yol tarifleri sürüklenebilir hale getirilemez.

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

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

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