Directions Service (Eski)

Avrupa Ekonomik Alanı'ndaki (AEA) geliştiriciler
Not: Sunucu tarafı kitaplıklar

Genel Bakış

DirectionsService nesnesini kullanarak yol tariflerini (çeşitli ulaşım yöntemlerini kullanarak) hesaplayabilirsiniz. Bu nesne, yol tarifi isteklerini alan ve verimli bir yol döndüren Google Maps API Yol Tarifi Hizmeti ile iletişim kurar. Seyahat süresi, optimize edilen birincil faktördür ancak mesafe, dönüş sayısı ve daha birçok faktör de dikkate alınabilir. Bu yönlendirici sonuçları kendiniz işleyebilir veya bu sonuçları oluşturmak için DirectionsRenderer nesnesini kullanabilirsiniz.

Yol tarifi isteğinde başlangıç veya hedef noktayı belirtirken sorgu dizesi (ör. "Chicago, IL" veya "Darwin, NSW, Avustralya"), LatLng değeri ya da Place nesnesi belirtebilirsiniz.

Directions hizmeti, bir dizi yol noktası kullanarak çok parçalı yol tarifleri döndürebilir. Yol tarifleri, harita üzerinde rotayı çizen bir çoklu çizgi olarak veya ek olarak bir <div> öğesi içinde bir dizi metin açıklaması olarak gösterilir (örneğin, "Williamsburg Köprüsü rampasına doğru sağa dönün").

Başlarken

Maps JavaScript API'deki Directions hizmetini kullanmadan önce Google Cloud Console'da, Maps JavaScript API için ayarladığınız projede Directions API'nin (Eski) 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 oluşturduğunuz projeyi seçip Aç'ı tıklayın.
  3. Kontrol paneli'ndeki API listesinde Directions API (Eski)'yi bulun.
  4. API'yi listede görüyorsanız hazırsınız demektir. API listede yoksa https://console.cloud.google.com/apis/library/directions-backend.googleapis.com adresinden etkinleştirin.

Fiyatlandırma ve politikalar

Fiyatlandırma

JavaScript Directions hizmetinin fiyatlandırma ve kullanım politikaları hakkında bilgi edinmek için Directions API (Eski) ile ilgili Kullanım ve Faturalandırma bölümüne bakın.

Politikalar

Directions hizmetinin kullanımı, Directions API (Eski) 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ızdır. Bu nedenle, isteğin tamamlanmasının ardından yürütülecek 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 DirectionsService.route() yöntemini çağırarak Yol Tarifi hizmetine istek gönderin. Bu yönteme, giriş terimlerini içeren bir DirectionsRequest nesne değişmez değeri ve yanıt alındığında yürütülecek bir geri çağırma yöntemi 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 (gerekli), yol tariflerinin hesaplanacağı başlangıç konumunu belirtir. Bu değer, String (ör. "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 Geocoding, Yer Arama ve Yer Adı Otomatik Tamamlama hizmetlerinden alabilirsiniz. Yer Adı Otomatik Tamamlama'dan alınan yer kimliklerinin kullanıldığı bir örnek için Yer Adı Otomatik Tamamlama ve Yol Tarifi başlıklı makaleyi inceleyin.
  • destination (zorunlu), yol tariflerinin hesaplanacağı bitiş konumunu belirtir. Seçenekler, yukarıda açıklanan origin alanıyla aynıdır.
  • travelMode (zorunlu), yol tarifleri hesaplanırken hangi ulaşım modunun kullanılacağını 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österilirken hangi birim sisteminin kullanılacağını belirtir. Geçerli değerler aşağıdaki Birim Sistemleri bölümünde belirtilmiştir.

  • waypoints[] (isteğe bağlı), bir DirectionsWaypoint dizisi belirtir. Ara noktalar, rotayı belirtilen konumlardan geçirerek değiştirir. Ara nokta, aşağıda gösterilen alanları içeren bir nesne değişmez değeri olarak belirtilir:

    • location, ara noktanın konumunu LatLng, Place nesnesi veya coğrafi olarak kodlanacak bir String olarak belirtir.
    • stopover, ara noktanın rotada bir durak olduğunu gösteren bir boole değeridir. Bu, rotayı iki rotaya bölme etkisine sahiptir.

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

  • optimizeWaypoints (isteğe bağlı), sağlanan waypoints kullanılarak oluşturulan rotanın, ara noktalar daha verimli bir sırada yeniden düzenlenerek optimize edilebileceğini belirtir. true ise Yol Tarifi hizmeti, yeniden sıralanan waypoints değerini bir waypoint_order alanında döndürür.(Daha fazla bilgi için aşağıdaki Rotalarda Yol Noktalarını Kullanma bölümüne bakın.)
  • provideRouteAlternatives (isteğe bağlı), true olarak ayarlandığında Directions hizmetinin yanıtta birden fazla rota alternatifi sunabileceğini belirtir. Rota alternatifleri sunmanın sunucudan yanıt süresini artırabileceğini unutmayın. Bu özellik yalnızca ara noktaları olmayan istekler için kullanılabilir.
  • avoidFerries (isteğe bağlı), true olarak ayarlandığında, hesaplanan rotaların mümkünse feribotlardan kaçı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 paralı yollardan kaçınması gerektiğini belirtir.
  • region (isteğe bağlı), ccTLD ("üst düzey alan") iki karakterli değeri olarak belirtilen bölge kodunu belirtir. (Daha fazla bilgi için aşağıdaki Bölgeye Göre Eğilim bölümüne bakın.)

Aşağıda örnek bir DirectionsRequest verilmiştir:

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

Seyahat Modları

Yol tariflerini hesaplarken hangi ulaşım modunun kullanılacağını belirtmeniz gerekir. Şu anda aşağıdaki seyahat modları desteklenmektedir:

  • DRIVING (Varsayılan), yol ağını kullanan standart arabayla yol tarifini gösterir.
  • BICYCLING, bisiklet yolları ve tercih edilen sokaklar üzerinden bisikletle yol tarifi ister.
  • TRANSIT, toplu taşıma rotaları üzerinden yol tarifi ister.
  • 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. İlgili yol tarifi türünün kullanılamadığı bir bölge için yol tarifi isterseniz yanıt olarak DirectionsStatus="ZERO_RESULTS" döndürülür.

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

Toplu Taşıma Seçenekleri

Yol tarifi isteği için kullanılabilen seçenekler, seyahat modlarına göre değişir. Toplu taşıma yol tarifi istenirken avoidHighways, avoidTolls, waypoints[] ve optimizeWaypoints seçenekleri yoksayılır. TransitOptions nesne değişmez değeri aracılığıyla toplu taşımaya özel rota seçenekleri belirtebilirsiniz.

Toplu taşıma yol tarifleri zamana duyarlıdır. Yol tarifleri yalnızca gelecekteki zamanlar için 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ı), istenen varış zamanını Date nesnesi olarak belirtir. Varış zamanı belirtilirse kalkış zamanı yok sayılır.
  • departureTime (isteğe bağlı), istenen kalkış saatini Date nesnesi olarak belirtir. arrivalTime belirtilirse departureTime yok sayılır. departureTime veya arrivalTime için bir değer belirtilmezse varsayılan olarak geçerli zaman 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 istekte bir API anahtarı varsa dahil edilebilir. Her TransitMode, tercih edilen bir toplu taşıma modunu belirtir. Aşağıdaki değerlere izin verilir:
    • BUS, hesaplanan rotada otobüsle seyahatin tercih edilmesi gerektiğini gösterir.
    • RAIL, hesaplanan rotada tren, tramvay, hafif raylı sistem ve metro ile seyahatin tercih edilmesi gerektiğini belirtir.
    • SUBWAY, hesaplanan rotada metroyla seyahatin tercih edilmesi gerektiğini belirtir.
    • TRAIN, hesaplanan rotada trenle seyahatin tercih edilmesi gerektiğini gösterir.
    • TRAM, hesaplanan rotada tramvay ve hafif raylı sistemle seyahatin tercih edilmesi gerektiğini gösterir.
  • routingPreference (isteğe bağlı), toplu taşıma rotaları için 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çenekleri etkileyebilirsiniz. Bu alan yalnızca istekte bir API anahtarı varsa belirtilebilir. Aşağıdaki değerlere izin verilir:
    • FEWER_TRANSFERS, hesaplanan rotada sınırlı sayıda aktarma tercih edilmesi gerektiğini gösterir.
    • LESS_WALKING, hesaplanan rotada sınırlı miktarda yürüyüşün tercih edilmesi gerektiğini belirtir.

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

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

Sürüş Seçenekleri

DrivingOptions nesnesi aracılığıyla arabayla yol tarifi için rota seçeneklerini belirtebilirsiniz.

DrivingOptions nesnesi aşağıdaki alanları içerir:

{
  departureTime: Date,
  trafficModel: TrafficModel
}

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

  • departureTime (drivingOptions nesne değişmez değerinin geçerli olması için gereklidir), istenen kalkış saatini Date nesnesi olarak belirtir. Değer, geçerli zamana veya gelecekteki bir zamana ayarlanmalıdır. Geçmişte olamaz. (API, farklı saat dilimlerinde tutarlı bir şekilde işlenmesini sağlamak için tüm tarihleri UTC'ye dönüştürür.) Google Haritalar Platformu Premium Plan müşterileri için: İsteğe departureTime parametresini eklerseniz API, o zamanki beklenen trafik koşullarına göre en iyi rotayı döndürür ve yanıta trafikteki tahmini süreyi (duration_in_traffic) ekler. Bir kalkış saati belirtmezseniz (yani istek drivingOptions içermiyorsa) döndürülen rota, trafik koşulları dikkate alınmadan genel olarak iyi bir rotadır.
  • trafficModel (isteğe bağlı), trafikte geçen süreyi hesaplarken kullanılacak varsayımları belirtir. Bu ayar, yanıttaki duration_in_traffic alanında döndürülen değeri etkiler. Bu alan, geçmiş ortalamalara göre trafikte geçirilen tahmini süreyi içerir. Varsayılan değer: bestguess. Aşağıdaki değerlere izin verilir:
    • bestguess (varsayılan), döndürülen duration_in_traffic değerinin, hem geçmiş trafik koşulları hem de canlı trafik hakkında bilinenlere göre seyahat süresinin en iyi tahmini olması gerektiğini belirtir. Canlı trafik, departureTime şu ana yaklaştıkça daha önemli hale gelir.
    • pessimistic, döndürülen duration_in_traffic değerinin çoğu gün gerçek seyahat süresinden daha uzun olması gerektiğini gösterir. Ancak trafik koşullarının özellikle kötü olduğu bazı günlerde bu değer aşılabilir.
    • optimistic, döndürülen duration_in_traffic değerinin çoğu gün gerçek seyahat süresinden daha kısa olması gerektiğini gösterir. Ancak trafik koşullarının özellikle iyi olduğu bazı günlerde bu değerden daha hızlı olabilir.

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

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

Birim Sistemleri

Varsayılan olarak yol tarifleri, başlangıç noktasının bulunduğu ülke veya bölgenin birim sistemi kullanılarak hesaplanır ve gösterilir. (Not: Adresler yerine enlem/boylam koordinatları kullanılarak ifade edilen başlangıç noktaları her zaman varsayılan olarak metrik birimlere ayarlanır.) Örneğin, "Chicago, IL" ile "Toronto, ONT" arasındaki bir rota için sonuçlar mil cinsinden gösterilirken tersi rota için sonuçlar kilometre cinsinden gösterilir. Aşağıdaki UnitSystem değerlerinden birini kullanarak istekte açıkça bir birim sistemi ayarlayarak bu birim sistemini geçersiz kılabilirsiniz:

  • UnitSystem.METRIC, metrik sistemin kullanıldığını belirtir. Mesafeler kilometre cinsinden gösterilir.
  • UnitSystem.IMPERIAL, İngiliz ölçü sisteminin kullanıldığını belirtir. Mesafeler mil cinsinden gösterilir.

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

Yol Tarifi İçin Bölgeye Göre Önceliklendirme

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

Ayrıca, region parametresini kullanarak Yol Tarifi hizmetini belirli bir bölgeye yönelik sonuca ağırlık verme döndürecek şekilde 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") iki karakterli değerlerle (örneğin, "co.uk" içindeki "uk") eşleşir. Bazı durumlarda region etiketi, bazen ccTLD değerlerinden farklı olan ISO-3166-1 kodlarını da destekler (örneğin, "Büyük Britanya" için "GB").

region parametresini kullanırken:

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

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

Yol Tarifi Oluşturuluyor

route() yöntemini kullanarak DirectionsService için yol tarifi isteği başlatmak, hizmet isteği tamamlandığında yürütülen bir geri çağırma işlevinin iletilmesini gerektirir. Bu geri çağırma, 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 başlangıç, varış veya ara noktalarında belirtilen konumlardan en az birinin coğrafi kodunun oluşturulamadığını gösterir.
  • ZERO_RESULTS, başlangıç ve varış noktaları arasında rota bulunamadığını gösterir.
  • MAX_WAYPOINTS_EXCEEDED, DirectionsRequest içinde çok fazla DirectionsWaypoint alanı sağlandığını gösterir. Ara noktalarla ilgili sınırlar hakkında bilgi edinmek için aşağıdaki bölüme bakın.
  • MAX_ROUTE_LENGTH_EXCEEDED, istenen rotanın çok uzun olduğunu ve işlenemediğini gösterir. Bu hata, daha karmaşık yol tarifleri döndürüldüğünde oluşur. Ara nokta, dönüş veya talimat sayısını azaltmayı deneyin.
  • INVALID_REQUEST, sağlanan DirectionsRequest değerinin geçersiz olduğunu gösterir. Bu hata kodunun en yaygın nedenleri, başlangıç veya varış noktası eksik olan istekler ya da ara noktalar 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 gösterir.
  • REQUEST_DENIED, web sayfasının yol tarifi hizmetini kullanmasına izin verilmediğini gösterir.
  • UNKNOWN_ERROR, bir sunucu hatası nedeniyle yol tarifi isteğinin işlenemediğini gösterir. 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.

DirectionsResult'ı görüntüleme

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

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

  1. DirectionsRenderer nesnesi oluşturun.
  2. Oluşturucuda setMap() yöntemini çağırarak oluşturucuyu iletilen haritaya bağlayın.
  3. Oluşturucuda setDirections() yöntemini çağırın ve yukarıda belirtildiği gibi DirectionsResult değerini iletin. Oluşturucu bir MVCObject olduğundan, özelliklerindeki 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 hesaplanmaktadır. Başlangıç ve hedef, açılır listelerdeki "start" ve "end" değerlerine göre ayarlanır. DirectionsRenderer, belirtilen konumlar arasındaki çoklu çizginin görüntülenmesini ve işaretçilerin başlangıç, varış ve varsa ara noktalara yerleştirilmesini yönetir.

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

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

HTML gövdesinde:

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

Örneği görüntüleyin

Aşağıdaki örnekte, San Francisco, Kaliforniya'daki Haight-Ashbury ile Ocean Beach arasında farklı seyahat modları kullanı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, yalnızca çoklu çizginin ve ilişkili işaretçilerin görüntülenmesini sağlamakla kalmaz, aynı zamanda yol tariflerinin bir dizi adım olarak metin biçiminde görüntülenmesini de sağlayabilir. Bunu yapmak için DirectionsRenderer cihazınızda setPanel() yöntemini çağırın ve bu bilgilerin gösterileceği <div> değerini iletin. Böylece, uygun telif hakkı bilgilerini ve sonuçla ilişkili olabilecek uyarıları da göstermiş olursunuz.

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

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

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

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

HTML gövdesinde:

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

Örneği görüntüleyin

DirectionsResult Nesnesi

DirectionsService hizmetine yol tarifi isteği gönderdiğinizde durum kodu ve DirectionsResult nesnesi olan bir sonuçtan 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 başlangıç, varış ve ara noktaların coğrafi kodlamasıyla ilgili ayrıntıları içeren bir DirectionsGeocodedWaypoint nesne dizisi içerir.
  • routes[], DirectionsRoute nesnelerinden oluşan bir dizi içerir. Her rota, DirectionsRequest içinde sağlanan başlangıç noktasından varış noktasına ulaşmanın bir yolunu gösterir. İsteğin provideRouteAlternatives alanı true olarak ayarlanmadığı sürece genellikle belirli bir istek için yalnızca bir rota döndürülür. Bu durumda birden fazla rota döndürülebilir.

Not: Alternatif rotalarda via_waypoint özelliğinin desteği sonlandırılmıştır. Sürüm 3.27, alternatif rotalara ek ara noktalar ekleyen son API sürümüdür. API'nin 3.28 ve sonraki sürümlerinde, alternatif rotaların sürüklenmesini devre dışı bırakarak Directions hizmetini kullanarak sürüklenebilir yol tarifleri uygulamaya devam edebilirsiniz. Yalnızca ana rota sürüklenebilir olmalıdır. Kullanıcılar, ana rotayı alternatif bir rotayla eşleşene kadar sürükleyebilir.

Yol Tarifi Coğrafi Kodlu Ara Noktaları

DirectionsGeocodedWaypoint, başlangıç noktası, varış noktası ve ara noktaların coğrafi kodlamasıyla ilgili ayrıntıları içerir.

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

  • geocoder_status, coğrafi kodlama işleminden kaynaklanan durum kodunu gösterir. Bu alan aşağıdaki değerleri içerebilir.
    • "OK", hata oluşmadığını, adresin başarıyla ayrıştırıldığını ve en az bir coğrafi kodun döndürüldüğünü gösterir.
    • "ZERO_RESULTS", coğrafi kodun başarılı olduğunu ancak sonuç döndürmediğini gösterir. Coğrafi kodlayıcıya mevcut olmayan bir address iletildiğinde 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 gösterir. Orijinal istekte yazım hataları ve/veya eksik adres olup olmadığını inceleyebilirsiniz.

    Kısmi eşleşmeler genellikle istekte ilettiğiniz bölgede bulunmayan açık adresler için gerçekleşir. Bir istek aynı bölgedeki iki veya daha fazla konumla eşleştiğinde de kısmi eşleşmeler döndürülebilir. Örneğin, "Hillpar St, Bristol, UK" araması hem Henry Street hem de Henrietta Street için kısmi eşleşme döndürür. Bir istekte yanlış yazılmış bir 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_id, bir yerin benzersiz tanımlayıcısıdır ve diğer Google API'leriyle kullanılabilir. Örneğin, Google Places API kitaplığıyla place_id kullanarak yerel bir işletmenin telefon numarası, çalışma saatleri, kullanıcı yorumları ve diğer bilgileri gibi ayrıntılarını alabilirsiniz. Yer kimliğine genel bakış bölümünü inceleyin.
  • types[], döndürülen sonucun türünü gösteren bir dizidir. Bu dizi, sonuçta döndürülen özelliğin türünü tanımlayan sıfır veya daha fazla etiket içerir. Örneğin, "Chicago" coğrafi kodu, "Chicago"nun bir şehir olduğunu belirten "locality" (yerleşim yeri) ve siyasi bir varlık olduğunu belirten "political" (siyasi) değerlerini döndürür.

Yol Tarifi Rotaları

Not: Eski DirectionsTrip nesnesi DirectionsRoute olarak yeniden adlandırıldı. Rotanın artık üst gezinin bir ayağı yerine, başlangıçtan bitişe kadar olan tüm yolculuğu ifade ettiğini unutmayın.

DirectionsRoute, belirtilen kalkış ve varış noktası için tek bir sonuç 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. 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 konum arasındaki rota ayağı hakkında bilgi içeren bir DirectionsLeg nesnesi dizisi içerir. Belirtilen her ara nokta veya hedef için ayrı bir ayak gösterilir. (Ara nokta içermeyen bir rota tam olarak bir DirectionsLeg içerir.) Her etap bir dizi DirectionStep öğesinden oluşur.
  • waypoint_order, hesaplanan rotadaki tüm ara noktaların sırasını gösteren bir dizi içerir. DirectionsRequest, optimizeWaypoints: true olarak iletildiyse bu dizide değiştirilmiş bir sıra olabilir.
  • overview_path, sonuçta elde edilen yol tariflerinin yaklaşık (düzeltilmiş) bir yolunu temsil eden bir LatLng dizisi içerir.
  • overview_polyline, rotanın kodlanmış çoklu çizgi temsilini içeren tek bir points nesnesi içerir. Bu çoklu çizgi, elde edilen yol tariflerinin yaklaşık (düzeltilmiş) yoludur.
  • bounds, bu rota boyunca çoklu çizginin sınırlarını gösteren bir LatLngBounds içerir.
  • copyrights, bu rota için gösterilecek telif hakkı metnini içerir.
  • warnings[], bu yol tarifleri gösterilirken görüntülenecek bir uyarı dizisi içerir. Sağlanan DirectionsRenderer nesnesini kullanmıyorsanız bu uyarıları kendiniz işlemeli ve göstermelisiniz.
  • 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 mevcut olduğu rotalar için döndürülür. Bu bilgiler şunlardır:
    • currency: Tutarı ifade eden para birimini gösteren ISO 4217 para birimi kodu.
    • value: Yukarıda belirtilen para biriminde toplam ücret tutarı.

Yol Tarifi Bölümleri

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

DirectionsLeg, hesaplanan rotada başlangıç noktasından varış noktasına kadar olan yolculuğun tek bir ayağını tanımlar. Ara nokta içermeyen rotalar tek bir "ayaktan" oluşur. Bir veya daha fazla ara nokta tanımlayan rotalar ise 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 ayrı adımına ilişkin bilgileri gösteren bir DirectionsStep nesnesi dizisi içerir.
  • distance, bu ayağın kapsadığı toplam mesafeyi aşağıdaki biçimde bir Distance nesnesi olarak gösterir:

    • value, metre cinsinden mesafeyi gösterir.
    • text, mesafenin dize temsilini içerir. Bu değer, varsayılan olarak başlangıç noktasında kullanılan birimlerle gösterilir. (Örneğin, Amerika Birleşik Devletleri'ndeki tüm çıkış noktaları için mil kullanılır.) Orijinal sorguda UnitSystem değerini açıkça 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, bu ayağın toplam süresini aşağıdaki biçimde bir Duration nesnesi olarak gösterir:

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

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

  • duration_in_traffic, mevcut trafik koşullarını dikkate alarak bu ayağın toplam süresini gösterir. duration_in_traffic yalnızca aşağıdaki koşulların tümü karşılandığında döndürülür:

    • İstek, mola noktaları içermez. Yani stopover değerinin true olduğu ara noktaları içermez.
    • İstek özellikle arabayla yol tarifi için gönderilmiştir. mode, driving olarak ayarlanmıştır.
    • departureTime, istekteki drivingOptions alanının bir parçası olarak eklenir.
    • İstenen rota için trafik koşulları bilgisi mevcut.

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

    • value, saniye cinsinden süreyi gösterir.
    • text, sürenin kullanıcılar tarafından okunabilecek bir temsilini içerir.
  • arrival_time, bu ayağın tahmini varış zamanını içerir. Bu özellik yalnızca toplu taşıma yol tarifleri için döndürülür. Sonuç, üç özelliğe sahip bir Time nesnesi olarak döndürülür:
    • value JavaScript Date nesnesi olarak belirtilen zaman.
    • text dize olarak belirtilen zaman. 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ığı şekliyle saat diliminin adıdır (ör. "America/New_York").
  • departure_time, bu ayağın tahmini kalkış saatini Time nesnesi olarak belirtir. departure_time yalnızca toplu taşıma yol tarifleri için kullanılabilir.
  • start_location, bu ayağın başlangıç noktasının LatLng değerini içerir. Directions Web Service, başlangıç ve bitiş noktalarında en yakın ulaşım seçeneğini (genellikle bir yol) kullanarak konumlar arasındaki yol tariflerini hesapladığından, başlangıç noktasının yakınında bir yol yoksa start_location, bu ayağın sağlanan başlangıç noktasından farklı olabilir.
  • end_location, bu ayağın hedefinin LatLng değerini içerir. DirectionsService, başlangıç ve bitiş noktalarındaki en yakın ulaşım seçeneğini (genellikle bir yol) kullanarak konumlar arasındaki yol tariflerini hesapladığından, örneğin varış noktasının yakınında bir yol yoksa end_location, bu ayağın sağlanan varış noktasından farklı olabilir.
  • start_address, bu ayağın başlangıcının kullanıcı tarafından okunabilir adresini (genellikle açık adres) içerir.

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

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

Yol Tarifi Adımları

DirectionsStep, bir yol tarifinin en küçük birimidir. Yolculukla ilgili belirli ve tek bir talimatı açıklayan tek bir adım içerir. Ör. "W. 'den sola dönün. 4th St." Adım, yalnızca talimatı açıklamakla kalmaz, aynı zamanda bu adımın bir sonraki adımla nasıl ilişkili olduğuna dair mesafe ve süre bilgilerini de içerir. Örneğin, "I-80 Batı'ya girin" olarak belirtilen bir adım, "37 mil" ve "40 dakika" süresini içerebilir. Bu, bir sonraki adımın bu adımdan 37 mil/40 dakika uzaklıkta olduğunu gösterir.

Toplu taşıma yol tariflerini aramak için Yol Tarifi hizmetini kullanırken adımlar dizisi, transit nesnesi biçiminde ek toplu taşımaya özel bilgiler içerir. Yol tarifleri birden fazla ulaşım modu içeriyorsa yürüme veya sürüş adımları için ayrıntılı yol tarifleri steps[] dizisinde sağlanır. Örneğin, bir yürüme adımı, başlangıç ve bitiş konumlarından yol tariflerini içerir: "Innes Ave ve Fitch St'ye yürüyün". Bu adım, steps[] dizisinde ilgili rota için ayrıntılı yaya yol tarifini içerir. Örneğin: "Kuzeybatı yönünde ilerleyin", "Sola dönüp Arelious Walker yönünde ilerleyin" ve "Sola dönüp Innes Ave yönünde ilerleyin".

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

  • instructions, bu adımla ilgili talimatları bir metin dizesi içinde içerir.
  • distance, bu adımın bir sonraki adıma kadar katettiği mesafeyi Distance nesnesi olarak içerir. (Yukarıdaki DirectionsLeg bölümünde yer alan açıklamaya bakın.) Mesafe bilinmiyorsa bu alan tanımlanmamış olabilir.
  • duration, bir sonraki adıma kadar adımın gerçekleştirilmesi için gereken tahmini süreyi Duration nesnesi olarak içerir. (Yukarıdaki DirectionsLeg bölümünde yer alan 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 değerini içerir.
  • end_location, bu adımın bitiş noktasının LatLng değerini içerir.
  • polyline, adımın kodlanmış çoklu çizgi temsilini içeren tek bir points nesnesi içerir. Bu çoklu çizgi, adımın yaklaşık (düzleştirilmiş) yoludur.
  • steps[] Toplu taşıma yol tariflerindeki yürüme veya sürüş adımları için ayrıntılı yol tarifleri 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 gidişatını açıklayan bir LatLngs dizisi içerir.
  • transit, varış ve kalkış saatleri ile toplu taşıma hattının adı gibi toplu taşımaya özel bilgiler 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 nesnesinin bir özelliği olarak döndürülen TransitDetails nesnesi aracılığıyla gösterilir. TransitDetails nesnesinden TransitStop, TransitLine, TransitAgency ve VehicleType nesneleriyle ilgili ek bilgilere aşağıda açıklandığı şekilde erişebilirsiniz.

Toplu Taşıma Ayrıntıları

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

  • arrival_stop, varış istasyonunu/durağını temsil eden bir TransitStop nesnesi içerir ve aşağıdaki özelliklere sahiptir:
    • Toplu taşıma istasyonunun/durağının adı: name. ör. "Taksim Meydanı".
    • location Toplu taşıma istasyonunun/durağının konumu, LatLng olarak gösterilir.
  • departure_stop, kalkış istasyonunu/durağını temsil eden bir TransitStop nesnesi içerir.
  • arrival_time, üç özelliği olan bir Time nesnesi olarak belirtilen varış zamanını içerir:
    • value JavaScript Date nesnesi olarak belirtilen saat.
    • text dize olarak belirtilen zaman. 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ığı şekliyle 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 şekilde bu hat üzerinde seyahat edilecek yönü belirtir. Bu genellikle son istasyon olur.
  • headway Bu değer, mevcut olduğunda aynı duraktan bu saatte yapılacak kalkışlar arasında beklenen saniye sayısını belirtir. Örneğin, headway değeri 600 ise otobüsünüzü kaçırdığınızda 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, hattın adını ve operatörünü, ayrıca TransitLine referans dokümanlarında açıklanan diğer özellikleri sağlar.
  • num_stops, bu adımdaki durak sayısını içerir. Varış durağını içerir ancak kalkış durağını içermez. Örneğin, yol tarifiniz A durağından ayrılmayı, B ve C duraklarından geçmeyi ve D durağına varmayı içeriyorsa num_stops, 3 değerini döndürür.

Toplu Taşıma Hattı

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

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

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

  • url, toplu taşıma operatörü 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 değişen genel simgeler kullanılır. New York metro sistemi gibi bazı toplu taşıma hatlarının, o hatta özel simgeleri vardır.
  • color, bu toplu taşıma için tabelalarda yaygın olarak kullanılan rengi içerir. Renk, #FF0033 gibi onaltılık bir dize olarak belirtilir.
  • text_color, bu hattın tabelalarında en çok tercih edilen metin rengini içerir. Renk, onaltılık dize olarak belirtilir.
  • vehicle, aşağıdaki özellikleri içeren bir Vehicle nesnesi içerir:
    • name bu satırda aracın adını içeriyor. ör. "Metro."
    • type, bu hatta kullanılan araç türünü içerir. Desteklenen değerlerin tam listesi için Araç Türü belgelerine bakın.
    • icon, genellikle bu araç türüyle ilişkilendirilen simgenin URL'sini içerir.
    • local_icon, yerel ulaşım tabelalarına göre bu araç türüyle ilişkili simgenin URL'sini içerir.

Araç Türü

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

Değer Tanım
VehicleType.RAIL Demiryolu.
VehicleType.METRO_RAIL Hafif raylı sistem.
VehicleType.SUBWAY Yeraltı hafif raylı sistemi.
VehicleType.TRAM Zemin üstü hafif raylı sistem.
VehicleType.MONORAIL Monoray.
VehicleType.HEAVY_RAIL Ağır raylı sistem.
VehicleType.COMMUTER_TRAIN Banliyö treni.
VehicleType.HIGH_SPEED_TRAIN Yüksek hızlı tren.
VehicleType.BUS Otobüs.
VehicleType.INTERCITY_BUS Şehirler arası otobüs.
VehicleType.TROLLEYBUS Troleybüs.
VehicleType.SHARE_TAXI Dolmuş, güzergahı üzerinde herhangi bir yerde yolcu indirip bindirebilen bir tür otobüstür.
VehicleType.FERRY Feribot.
VehicleType.CABLE_CAR Kabloyla, genellikle yerde çalışan bir araç. Teleferikler VehicleType.GONDOLA_LIFT türünde olabilir.
VehicleType.GONDOLA_LIFT Teleferik.
VehicleType.FUNICULAR Kabloyla dik bir yokuştan yukarı çekilen araç. Füniküler genellikle iki vagondan oluşur ve her vagon diğeri için karşı ağırlık görevi görür.
VehicleType.OTHER Diğer tüm araçlar bu türü döndürür.

DirectionsResults'ı inceleme

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

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

Aşağıdaki örnekte, New York'taki belirli turistik yerlere yaya yol tarifi çizilmektedir. Her adım için işaretçi eklemek üzere rotanın DirectionsStep değerini inceler ve ilgili adımın talimat metnini içeren bir InfoWindow öğesine bilgi ekleriz.

Not: Yaya yol tarifini hesapladığımız için kullanıcıya uyarıları ayrı bir <div> panelinde 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 ara noktaları kullanma

DirectionsRequest bölümünde belirtildiği gibi, yaya, bisiklet veya arabayla yol tarifi için rota hesaplarken ara noktalar (DirectionsWaypoint türünde) de belirtebilirsiniz. Toplu taşıma yol tariflerinde ara noktalar kullanılamaz. Ara noktalar, ek konumlardan geçen rotaları hesaplamanıza olanak tanır. Bu durumda, döndürülen rota belirtilen ara noktalardan geçer.

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

  • location (zorunlu), ara noktanın adresini belirtir.
  • stopover (isteğe bağlı), bu ara noktanın rotadaki gerçek bir durak (true) mı yoksa yalnızca belirtilen konumdan (false) geçme tercihi mi olduğunu belirtir. Duraklar varsayılan olarak true şeklindedir.

Varsayılan olarak, Directions hizmeti, sağlanan yol noktaları üzerinden verilen sırayla 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 izin vermek için DirectionsRequest içinde optimizeWaypoints: true değerini iletebilirsiniz. (Bu optimizasyon, gezgin satıcı problemi'nin bir uygulamasıdır.) Seyahat süresi, optimize edilen birincil faktördür ancak en verimli rotanın hangisi olduğuna karar verilirken mesafe, dönüş sayısı ve daha birçok faktör de dikkate alınabilir. Directions hizmetinin rotayı optimize edebilmesi için tüm ara noktaların mola yeri olması gerekir.

Yol tarifi hizmetine, ara noktalarının sırasını optimize etmesi talimatını verirseniz bu noktaların 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 genelindeki ülkeler arası rotalar hesaplanmaktadır. (Birden fazla yol noktası seçmek için listedeki öğeleri seçerken Ctrl tuşunu basılı tutarak tıklayın.) Her rotanın başlangıç ve bitiş noktasıyla ilgili metni 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;

Ara Noktalar İç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'deki Directions hizmetini kullanırken izin verilen maksimum yol noktası sayısı, başlangıç ve varış noktası hariç 25'tir. Sınırlar, Directions API (Eski) web hizmeti ile aynıdır.
  • Directions API (Eski) web hizmeti için müşterilerin 25 yol noktası, başlangıç noktası ve varış noktası kullanmasına izin verilir.
  • Google Haritalar Platformu Premium Plan müşterileri 25 yol noktası, başlangıç noktası ve varış noktası kullanabilir.
  • Toplu taşıma yol tarifinde ara noktalar desteklenmez.

Sürüklenebilir Yol Tarifi

Kullanıcılar, DirectionsRenderer kullanılarak gösterilen bisiklet, yaya veya arabayla yol tariflerini, sürüklenebilir olmaları halinde dinamik olarak değiştirebilir. Bu sayede kullanıcılar, haritada ortaya çıkan yolları tıklayıp sürükleyerek rotaları seçebilir ve değiştirebilir. Bir oluşturucunun ekranında sürüklenebilir yol tariflerine izin verilip verilmediğini, draggable özelliğini true olarak ayarlayarak belirtirsiniz. Toplu taşıma yol tarifleri sürüklenebilir hale getirilemez.

Yol tarifleri sürüklenebilir olduğunda kullanıcı, oluşturulan sonucun yolundaki (veya ara noktasındaki) herhangi bir noktayı seçip belirtilen bileşeni yeni bir konuma taşıyabilir. DirectionsRenderer, değiştirilen yolu gösterecek şekilde dinamik olarak güncellenir. Bıraktığınızda haritaya geçiş ara noktası eklenir (küçük beyaz bir işaretçiyle gösterilir). Bir yol segmentini seçip taşımak rotanın o ayağını değiştirirken, bir yol noktası işaretçisini (başlangıç ve bitiş noktaları dahil) seçip taşımak rotanın o yol noktasından geçen ayaklarını değiştirir.

Sürüklenebilir yol tarifleri istemci tarafında değiştirilip oluşturulduğundan, kullanıcı görüntülenen yol tariflerini değiştirdiğinde bildirim almak için DirectionsRenderer üzerindeki directions_changed etkinliğini izleyip işlemek isteyebilirsiniz.

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

TypeScript

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

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

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

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

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

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

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

  if (!myroute) {
    return;
  }

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

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

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

JavaScript

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

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

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

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

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

  if (!myroute) {
    return;
  }

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

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

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