Yol Tarifi Hizmeti

Genel Bakış

DirectionsService nesnesini kullanarak çeşitli ulaşım yöntemleriyle yol tarifini hesaplayabilirsiniz. Bu nesne, yol tarifi isteklerini alan ve verimli bir yol döndüren Google Haritalar 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 dikkate alınabilir. Bu yol tarifi sonuçlarını kendiniz işleyebilir veya bu sonuçları oluşturmak için DirectionsRenderer nesnesini kullanabilirsiniz.

Bir yol tarifi isteğinde başlangıç veya varış noktasını belirtirken bir sorgu dizesi (ör. "Chicago, IL" veya "Darwin, NSW, Avustralya"), LatLng değeri ya da Place nesnesi belirtebilirsiniz.

Yol tarifi hizmeti, bir dizi yol noktası kullanarak çok parçalı yol tarifleri döndürebilir. Yönler, rotayı haritada çizen bir poli çizgisi olarak veya ek olarak bir <div> öğesi içinde bir dizi metin açıklaması olarak (ör. "Williamsburg Köprüsü rampasına sağa dönün") gösterilir.

Başlarken

Maps JavaScript API'de Yol Tarifi Hizmeti'ni kullanmadan önce, öncelikle Google Cloud Console'da, Maps JavaScript API için oluşturduğunuz projede Directions API'nin etkinleştirildiğinden emin olun.

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

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

Fiyatlandırma ve politikalar

Fiyatlandırma

16 Temmuz 2018'den itibaren Haritalar, Rotalar ve Yerler için kullandıkça öde türünde yeni bir fiyatlandırma planı kullanıma sunuldu. JavaScript Yol Tarifi 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'nin Kullanım ve Faturalandırma bölümüne bakın.

Politikalar

Yön tarifi hizmetinin kullanımı, Yön Tarifi API'si için açıklanan politikalara uygun olmalıdır.

Yol Tarifi İstekleri

Google Haritalar API'nin harici bir sunucuya çağrı yapması gerektiğinden, Yol Tarifi Hizmeti'ne erişim ayarsızdır. Bu nedenle, istek tamamlandıktan sonra çalıştırılacak 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üne ait bir nesne oluşturun ve DirectionsService.route()'ı çağırarak yol tarifi hizmetine istek gönderin. Bu istek için, giriş terimlerini ve yanıt alındıktan sonra çalışacak bir geri çağırma yöntemini içeren bir DirectionsRequest nesne değişmezi gönderin.

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

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

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

  • origin (zorunlu), yol tarifinin hesaplanacağı başlangıç konumunu belirtir. Bu değer bir String (ör. "İstanbul, İstanbul"), LatLng değeri veya Place nesnesi olarak belirtilebilir. Place nesnesi kullanıyorsanız yer kimliği, sorgu dizesi veya LatLng konum belirtebilirsiniz. Yer kimliklerini, Maps JavaScript API'deki Coğrafi Kodlama, Yer Arama ve Yer Otomatik Tamamlama hizmetlerinden alabilirsiniz. Yer Adı Otomatik Tamamlama'daki yer kimliklerini kullanan bir örnek için Yer Adı Otomatik Tamamlama ve Yol Tarifleri başlıklı makaleyi inceleyin.
  • destination (zorunlu), yol tarifinin hesaplanacağı bitiş konumunu belirtir. Seçenekler, yukarıda açıklanan origin alanıyla aynıdır.
  • travelMode (zorunlu), yol tarifi hesaplanırken kullanılacak toplu taşıma yolunu belirtir. Geçerli değerler aşağıda Seyahat Şekilleri 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ğıda Nakliye 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ğıda Sürüş Seçenekleri bölümünde açıklanmıştır.
  • unitSystem (isteğe bağlı), sonuçları görüntülerken hangi birim sisteminin kullanılacağını belirtir. Geçerli değerler aşağıda Birimi Sistemleri bölümünde belirtilmiştir.

  • waypoints[] (isteğe bağlı) bir DirectionsWaypoint dizisi belirtir. Yol işaretleri, bir rotayı belirtilen konumlardan geçirerek değiştirir. Yol noktası, aşağıda gösterilen alanlara sahip bir nesne literali olarak belirtilir:

    • location, LatLng, Yer nesnesi veya coğrafi kodlanacak bir String olarak yol işaretinin konumunu belirtir.
    • stopover, yol noktasının rotadaki bir durak olduğunu belirten ve rotanın iki rotaya bölünmesine yol açan bir boole değeridir.

    (Yol işaretleri hakkında daha fazla bilgi için aşağıdaki Rotalarda Yol İşaretleri Kullanma bölümüne bakın.)

  • optimizeWaypoints (isteğe bağlı), sağlanan waypoints değerinin kullanıldığı rotanın, yol noktalarını daha verimli bir sırayla yeniden düzenleyerek optimize edilebileceğini belirtir. true ise Yol Tarifi Hizmeti, yeniden sıralanmış waypoints değerini bir waypoint_order alanında döndürür.(Daha fazla bilgi için aşağıdaki Rotalarda Ara Noktaları Kullanma bölümüne bakın.)
  • provideRouteAlternatives (isteğe bağlı) true değerine ayarlandığında, Yönler hizmetinin yanıtta birden fazla rota alternatifi sağlayabileceğini belirtir. Rota alternatifleri sağlamanın, sunucudan gelen yanıt süresini artırabileceğini unutmayın. Bu özellik yalnızca ara yol noktası içermeyen 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 büyük 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ğer olarak belirtilen bölge kodunu belirtir. (Daha fazla bilgi için aşağıdaki Bölge Eğilimi 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
}

Ulaşım Şekilleri

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

  • DRIVING (Varsayılan) Karayolu ağını kullanan standart sürüş yol tariflerini gösterir.
  • BICYCLING, bisiklet yolları ve tercih edilen yollar üzerinden bisikletle yol tarifi ister.
  • TRANSIT toplu taşıma rotaları üzerinden yol tarifi isteğinde bulunur.
  • WALKING yaya yolları ve kaldırımlar üzerinden yürüyüş yolu tarifi isteğinde bulunur.

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

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

Toplu Taşıma Seçenekleri

Yol tarifi isteği için kullanılabilen seçenekler ulaşım modlarına göre değişir. Toplu taşıma yol tarifi isteğinde bulunurken avoidHighways, avoidTolls, waypoints[] ve optimizeWaypoints seçenekleri yoksayılır. TransitOptions nesne değişmez değerini kullanarak nakliyeye özgü yönlendirme seçeneklerini belirtebilirsiniz.

Toplu taşıma yol tarifleri zamana bağlıdır. Yalnızca gelecekteki bir zaman için yol tarifi döndürülür.

TransitOptions nesne değişmezi 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ı yoksayılır.
  • departureTime (isteğe bağlı), istenen kalkış saatini Date nesnesi olarak belirtir. arrivalTime belirtilirse departureTime yoksayılır. departureTime veya arrivalTime için bir değer belirtilmezse varsayılan olarak şimdiki saate (yani geçerli saate) ayarlanır.
  • modes[] (isteğe bağlı), bir veya daha fazla TransitMode nesne literalı içeren bir dizidir. Bu alan yalnızca istek bir API anahtarı içeriyorsa dahil edilebilir. Her TransitMode, tercih edilen bir toplu taşıma şeklini belirtir. Aşağıdaki değerlere izin verilir:
    • BUS, hesaplanan rotanın otobüsle seyahat etmeyi tercih edeceğini gösterir.
    • RAIL, hesaplanan rotanın tren, tramvay, hafif raylı sistem ve metro ile seyahat etmeyi tercih etmesi gerektiğini gösterir.
    • SUBWAY, hesaplanan rotanın metroyla seyahat etmeyi tercih edeceğini gösterir.
    • TRAIN, hesaplanan rotanın trenle seyahat etmeyi tercih etmesi gerektiğini gösterir.
    • TRAM, hesaplanan rotanın tramvay ve hafif raylı sistemle seyahat etmeyi tercih etmesi 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 tercih edebilirsiniz. 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 aktarma seçeneğini tercih etmesi gerektiğini gösterir.
    • LESS_WALKING Hesaplanan rotanın sınırlı miktarda yürüyüşe öncelik vermesi gerektiğini gösterir.

Aşağıda toplu taşımaya göre örnek bir DirectionsRequest gösterilmektedir:

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

Sürüş Seçenekleri

Araçla yol tarifleri 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şmezinin geçerli olması için zorunludur), istenen kalkış saatini Date nesnesi olarak belirtir. Değer, mevcut saate veya gelecekteki bir saate ayarlanmalıdır. Geçmişte olamaz. (API, saat dilimlerinde tutarlı bir şekilde işlem yapılmasını sağlamak için tüm tarihleri UTC'ye dönüştürür.) Google Haritalar Platformu Premium Planı müşterileri için isteğe departureTime parametresini eklerseniz API, o anda beklenen trafik koşullarını dikkate alarak en iyi rotayı döndürür ve yanıta trafikte tahmini süreyi (duration_in_traffic) ekler. Kalkış saati belirtmezseniz (yani istek drivingOptions içermiyorsa) döndürülen rota genellikle trafik koşullarını dikkate almadan iyi bir rotadır.
  • trafficModel (isteğe bağlı), trafikteki süreyi hesaplarken kullanılacak varsayımlarını belirtir. Bu ayar, yanıttaki duration_in_traffic alanında döndürülen değeri etkiler. Bu değer, geçmiş ortalamalara göre trafikte tahmini süreyi içerir. Varsayılan olarak bestguess değerine ayarlanır. 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 bilinenler göz önüne alındığında seyahat süresinin en iyi tahmini olması gerektiğini belirtir. Canlı trafik, departureTime'nin şimdiye ne kadar yakın olduğuna bağlı olarak daha da önem kazanır.
    • pessimistic, döndürülen duration_in_traffic değerinin çoğu gün gerçek seyahat süresinden daha uzun olması gerektiğini belirtir. Ancak özellikle kötü trafik koşullarının 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 belirtir. Ancak özellikle trafik koşullarının iyi olduğu bazı günlerde bu değerden daha hızlı olabilir.

Aşağıda, sürüş talimatları 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 başlangıç noktasının ülkesinin veya bölgesinin birim sistemi kullanılarak hesaplanır ve gösterilir. (Not: Adresler yerine enlem/boylam koordinatları kullanılarak ifade edilen başlangıç noktaları varsayılan olarak her zaman metrik birimlerdedir.) Örneğin, "Chicago, IL" ile "Toronto, ONT" arasındaki bir rotanın sonuçları mil cinsinden, ters rotanın sonuçları ise kilometre cinsinden gösterilir. Aşağıdaki UnitSystem değerlerinden birini kullanarak istek içinde açıkça ayarlayarak bu birim sistemini geçersiz kılabilirsiniz:

  • UnitSystem.METRIC, metrik sisteminin kullanımını belirtir. Mesafeler kilometre cinsinden gösterilir.
  • UnitSystem.IMPERIAL, İngiliz (Imperial) sisteminin kullanıldığını belirtir. Mesafeler mil cinsinden gösterilir.

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

Yol tarifleri için bölge yanlılığı

Google Haritalar API Directions Hizmeti, JavaScript önyüklemesini yüklediğiniz alan adından (bölge veya ülke) etkilenen adres sonuçlarını döndürür. (Çoğu kullanıcı https://maps.googleapis.com/ yüklediğinden, bu işlemle ABD için bir varsayılan alan belirlenir.) Bootstrap'u farklı bir desteklenen alandan yüklerseniz bu alandan etkilenen sonuçlar alırsınız. Örneğin, "San Francisco" aramaları, https://maps.googleapis.com/ (ABD) ülkesinde yüklenen uygulamalardan farklı sonuçlar döndürebilir.http://maps.google.es/

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

region parametresi kullanılırken:

  • Yalnızca bir ülke veya bölge belirtin. Birden fazla değer yok sayılır ve isteğin başarısız olmasına 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 yanlılığı yalnızca yönleri destekleyen ülkeler ve bölgelerde desteklenir. Yol Tarifleri API'nin uluslararası kapsamını görmek için Google Haritalar Platformu Kapsam Ayrıntıları'na bakın.

Oluşturma Yönergeleri

route() yöntemiyle DirectionsService için yol tarifi isteği başlatmak, hizmet isteği tamamlandıktan sonra çalıştırılacak bir geri çağırma işlevi iletmeyi gerektirir. Bu geri çağırma işlevi, 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, istekteki başlangıç, varış veya yol düğümlerinde belirtilen konumlardan en az birinin coğrafi kodlanamadığı anlamına gelir.
  • ZERO_RESULTS, başlangıç ile varış noktası arasında rota bulunamadığını gösterir.
  • MAX_WAYPOINTS_EXCEEDED, DirectionsRequest içinde çok fazla DirectionsWaypoint alanının sağlandığını gösterir. Yol düğümleri için 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österir. Bu hata, daha karmaşık yönler döndürüldüğünde Yol işareti, 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ı bulunmayan istekler ya da yol noktaları içeren toplu taşıma istekleridir.
  • 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 hizmetinin kullanılmasına izin verilmediğini gösterir.
  • UNKNOWN_ERROR, bir yol tarifi isteğinin sunucu hatası nedeniyle işlenemediğini gösterir. Tekrar denerseniz istek başarılı olabilir.

Sonuç işlenmeden ö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österebilen bir 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. Oluşturucuda setMap()'ü çağırarak onu iletilen haritaya bağlayın.
  3. Yukarıda belirtildiği gibi DirectionsResult öğesini ileterek oluşturucuda setDirections() işlevini çağırın. Oluşturucu bir MVCObject olduğundan, özelliklerinde yapılan değişiklikleri otomatik olarak algılar ve ilişkili yönler değiştiğinde haritayı günceller.

Aşağıdaki örnekte, 66 numaralı otoyoldaki iki konum arasındaki yol tarifi hesaplanır. Bu örnekte, başlangıç ve varış noktası, açılır listelerdeki "start" ve "end" değerlerine göre belirlenir. DirectionsRenderer, belirtilen konumlar arasındaki çoklu çizginin görüntülenmesini ve başlangıç, hedef ve varsa tüm yol işaretlerinin 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'da Haight-Ashbury ile Ocean Beach arasında farklı ulaşım modlarını kullanarak gidilecek yol 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 değil, aynı zamanda talimatların bir dizi adım olarak metin olarak görüntülenmesini de yönetebilir. Bunu yapmak için DirectionsRenderer'unuzda setPanel() işlevini çağırın ve bu bilgilerin gösterileceği <div> öğesini iletin. Bu sayede, uygun telif hakkı bilgilerini ve sonuçla ilişkili olabilecek tüm uyarıları da göstermiş olursunuz.

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

Aşağıdaki örnek, yukarıda gösterilen örnekle aynıdır ancak yönlerin 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örüntüleyin

DirectionsResult Nesnesi

DirectionsService adresine yol tarifi isteği gönderdiğinizde, bir durum kodundan ve DirectionsResult nesnesi olan bir sonuçtan oluşan bir yanıt alırsınız. DirectionsResult, aşağıdaki alanlara sahip bir nesne literalıdır:

  • geocoded_waypoints[], her biri başlangıç, varış ve yol işaretlerinin coğrafi kodlamasıyla ilgili ayrıntılar içeren bir DirectionsGeocodedWaypoint nesnesi dizisi içerir.
  • routes[], DirectionsRoute nesneleri dizisi içerir. Her rota, DirectionsRequest içinde sağlanan başlangıç noktasından varış noktasına gitmenin bir yolunu belirtir. Genellikle, isteklerin provideRouteAlternatives alanı true olarak ayarlanmadığı sürece belirli bir istek için yalnızca bir rota döndürülür. Bu durumda birden fazla rota döndürülebilir.

Not: via_waypoint mülkünün desteği, alternatif rotalarda sonlandırıldı. 3.27 sürümü, alternatif rotalarda yol işaretleri aracılığıyla ek bilgiler ekleyen API'nin son sürümüdür. API'nin 3.28 ve sonraki sürümlerinde, alternatif rotaların sürüklenmesini devre dışı bırakarak Yönergeler hizmetini kullanarak sürüklenebilen 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.

Coğrafi Kodlanmış Yol Tarifi Yol Noktaları

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

DirectionsGeocodedWaypoint, aşağıdaki alanlara sahip bir nesne literalıdır:

  • 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 kod döndürüldüğünü gösterir.
    • "ZERO_RESULTS", coğrafi kodlamanın başarılı olduğunu ancak sonuç döndürmediğini gösterir. Bu durum, coğrafi kodlayıcıya var olmayan bir address iletilmesi durumunda ortaya çıkabilir.
  • partial_match, coğrafi kodlayıcının istenen adresin bir kısmını eşleştirebilmesine rağmen orijinal istek için tam eşleşme döndürmediğini gösterir. Orijinal isteği, yazım hataları ve/veya eksik adres olup olmadığını kontrol etmek için inceleyebilirsiniz.

    Kısmi eşleşmeler genellikle, istekte belirttiğiniz yerleşim biriminde bulunmayan sokak adresleri 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" ifadesi hem Henry Street hem de Henrietta Street için kısmi eşleşme döndürür. Bir istek yanlış yazılmış bir adres bileşeni içeriyorsa coğrafi kodlama hizmetinin alternatif bir adres ö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, yerel bir işletmenin telefon numarası, çalışma saatleri, kullanıcı yorumları gibi ayrıntılarını almak için place_id'yi Google Places API kitaplığıyla birlikte kullanabilirsiniz. Yer kimliğine genel bakış başlıklı makaleyi inceleyin.
  • types[], döndürülen sonucun türünü belirten bir dizidir. Bu dizi, sonuçta döndürülen özellik türünü tanımlayan sıfır veya daha fazla etiket içerir. Örneğin, "Chicago" için bir coğrafi kod, "Chicago"nun bir şehir olduğunu belirten "locality" değerini ve siyasi bir varlık olduğunu belirten "political" değerini döndürür.

Yol Tarifi Rotaları

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

DirectionsRoute, belirtilen kaynak ve hedeften tek bir sonuç içerir. Bu rota, yol noktası belirtilip belirtilmediğine bağlı olarak bir veya daha fazla bölümden (DirectionsLeg türü) oluşabilir. Ayrıca rota, yönlendirme bilgilerine ek olarak kullanıcıya gösterilmesi gereken telif hakkı ve uyarı bilgilerini de içerir.

DirectionsRoute, aşağıdaki alanlara sahip bir nesne literalıdır:

  • legs[], her biri belirli bir rotadaki iki konumdan rotanın bir bölümü hakkında bilgi içeren bir DirectionsLeg nesnesi dizisi içerir. Belirtilen her yol noktası veya hedef için ayrı bir etap bulunur. (Yol noktası içermeyen bir rota tam olarak bir DirectionsLeg içerir.) Her bölüm, bir dizi DirectionStep'dan oluşur.
  • waypoint_order, hesaplanan rotadaki tüm yol işaretlerinin sırasını belirten bir dizi içerir. DirectionsRequest iletildiyse bu dizi, değiştirilmiş bir sıra içerebilir optimizeWaypoints: true.
  • overview_path, elde edilen yol tarifinin yaklaşık (düzeltilmiş) yolunu temsil eden bir LatLng dizisi içerir.
  • overview_polyline, rotanın kodlanmış bir polilini temsilini barındıran tek bir points nesnesi içerir. Bu çoklu çizgi, elde edilen yol tarifinin yaklaşık (düzeltilmiş) bir yoludur.
  • bounds, bu belirli rotadaki poli çizginin sınırlarını belirten bir LatLngBounds içerir.
  • copyrights, bu rota için gösterilecek telif hakkı metnini içerir.
  • warnings[], bu talimatlar gösterilirken gösterilecek bir uyarı dizisi içerir. Sağlanan DirectionsRenderer nesnesini kullanmıyorsanız bu uyarıları kendiniz yönetmeniz ve göstermeniz gerekir.
  • fare, bu rotadaki toplam ücreti (yani toplam bilet maliyetlerini) içerir. Bu özellik yalnızca toplu taşıma istekleri için ve yalnızca toplu taşımanın tüm aşamalarında ücret bilgilerinin bulunduğu rotalar için döndürülür. Bu bilgiler şunları 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ı.

Yönlendirme Bacakları

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

DirectionsLeg, hesaplanan rotada başlangıç noktasından hedefe giden yolculuğun tek bir bölümünü tanımlar. Yol noktası içermeyen rotalar tek bir "ayak"tan oluşur. Bir veya daha fazla yol noktası tanımlayan rotalar ise yolculuğun belirli ayaklarına karşılık gelen bir veya daha fazla ayaktan oluşur.

DirectionsLeg, aşağıdaki alanlara sahip bir nesne literalidir:

  • steps[], yolculuk bölümünün her bir adımı hakkında bilgi gösteren bir DirectionsStep nesnesi dizisi içerir.
  • distance, bu bacağın katettiği toplam mesafeyi aşağıdaki biçime sahip bir Distance nesnesi olarak gösterir:

    • value, mesafeyi metre cinsinden gösterir
    • text, mesafenin varsayılan olarak başlangıçta kullanılan birimlerde gösterilen bir dize temsilini içerir. (Örneğin, ABD'deki tüm çıkış noktaları için mil kullanılır.) Orijinal sorguda özel olarak bir UnitSystem ayarlayarak bu birim sistemini geçersiz kılabilirsiniz. Hangi birim sistemini kullandığınızdan bağımsız olarak distance.value alanının her zaman metre cinsinden ifade edilen bir değer içerdiğini unutmayın.

    Mesafe bilinmiyorsa bu alanlar tanımlanmamış olabilir.

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

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

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

  • duration_in_traffic, mevcut trafik koşulları dikkate alınarak bu duration_in_traffic yalnızca aşağıdaki koşulların tümü geçerliyse döndürülür:

    • İstek, durak noktası yol noktalarını içermiyor. Yani, stopover değerinin true olduğu yol işaretlerini içermez.
    • İstek özellikle arabayla yol tarifi içindir. mode, driving olarak ayarlanmıştır.
    • 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 gösterir.
    • text, sürenin okunabilir bir temsilini içerir.
  • arrival_time, bu bölüm için tahmini varış zamanını içerir. Bu özellik yalnızca toplu taşıma yol tarifleri için döndürülür. Sonuç, üç özelliği olan bir Time nesnesi olarak döndürülür:
    • value JavaScript nesnesi olarak belirtilen saat. Date
    • text zaman, dize olarak belirtilir. Zaman, 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 bölüm için Time nesnesi olarak belirtilen tahmini kalkış saatini içerir. departure_time yalnızca toplu taşıma yol tarifleri için kullanılabilir.
  • start_location, bu bacağın kaynağının LatLng değerini içerir. Yönler Web Hizmeti, başlangıç ve bitiş noktalarında en yakın ulaşım seçeneğini (genellikle yol) kullanarak konumlar arasındaki yol tarifini hesapladığından, start_location, örneğin bir yol başlangıca yakın değilse bu bölümün sağlanan başlangıç noktasından farklı olabilir.
  • end_location, bu LatLng bölümünün varış yerini içerir. DirectionsService, başlangıç ve bitiş noktalarında en yakın ulaşım seçeneğini (genellikle yol) kullanarak konumlar arasındaki yol tariflerini hesapladığından, end_location bu bölümün sağlanan hedefinden farklı olabilir (ör. hedefe yakın bir yol yoksa).
  • start_address, bu etabın başlangıç kısmının okunabilir adresini (genellikle açık adres) içerir.

    Bu içerik olduğu gibi okunmak üzere tasarlanmıştır. Biçimlendirilmiş adresi programatik olarak ayrıştırmayın.
  • end_address, bu etabın sonundaki kullanıcı tarafından okunabilir adresi (genellikle açık adres) içerir.

    Bu içerik olduğu gibi okunmak üzere tasarlanmıştır. Biçimlendirilmiş adresi programatik olarak ayrıştırmayın.

Yol tarifi adımları

DirectionsStep, bir yönün rotasının en atomik birimidir ve yolculuktaki belirli bir talimatı açıklayan tek bir adım içerir. Ör. "W. 4. Cadde" Adım, yalnızca talimatı açıklamakla kalmaz, aynı zamanda bu adımın sonraki adımla ilişkisi hakkında mesafe ve süre bilgilerini de içerir. Örneğin, "Batı I-80'e katılın" olarak gösterilen bir adımda "37 mil" ve "40 dakika" süre olabilir. Bu, 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 Hizmeti kullanılırken adımlar dizisi, transit nesnesi biçiminde ek Toplu Taşımaya özgü bilgiler içerir. Yol tarifinde birden fazla ulaşım şekli varsa steps[] dizisinde yürüyüş veya sürüş adımları için ayrıntılı yol tarifi sağlanır. Örneğin, yürüyüş adımı başlangıç ve bitiş konumlarından yol tariflerini içerir: "Innes Ave & Fitch St'ye yürüyün". Bu adımda, steps[] dizisinde söz konusu rotanın ayrıntılı yaya yol tarifleri yer alır. Örneğin: "Kuzeybatıya gidin", "Arelious Walker'a sola dönün" ve "Innes Ave'ye sola dönün".

DirectionsStep, aşağıdaki alanlara sahip bir nesne literalidir:

  • instructions, bir metin dizesinde bu adımla ilgili talimatları içerir.
  • distance, bu adımdan sonraki adıma kadar kat edilen mesafeyi Distance nesnesi olarak içerir. (Yukarıdaki DirectionsLeg bölümündeki açıklamaya bakın.) Mesafe bilinmiyorsa bu alan tanımlanmamış olabilir.
  • duration, bir Duration nesnesi olarak adımın uygulanması için gereken sürenin tahminini içerir. (Yukarıdaki DirectionsLeg bölümündeki 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 kodlanmış 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ış bir polilini temsil eden tek bir points nesnesi içerir. Bu çoklu çizgi, adımın yaklaşık (düzeltilmiş) yoludur.
  • steps[] Toplu taşıma tariflerinde yaya veya sürüş adımlarıyla ilgili ayrıntılı talimatları içeren bir DirectionsStep nesne değişmezi. Alt adımlar yalnızca toplu taşıma yol tarifleri için kullanılabilir.
  • travel_mode, bu adımda kullanılan TravelMode değerini 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 özgü bilgileri içerir.

Toplu Taşımaya Özgü Bilgiler

Toplu taşıma yol tarifleri, diğer ulaşım modlarıyla alakalı olmayan ek bilgiler döndürür. Bu ek özellikler, DirectionsStep ö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 şu özelliklere sahip bir TransitStop nesnesi içerir:
    • name toplu taşıma istasyonunun/durağının adı. ör. "Union Square".
    • location toplu taşıma istasyonunun/durağının konumu, LatLng olarak temsil edilir.
  • departure_stop, kalkış istasyonunu/durağını temsil eden bir TransitStop nesnesi içerir.
  • arrival_time, varış zamanını içerir. Bu değer, üç özelliği olan bir Time nesnesi olarak belirtilir:
    • value JavaScript nesnesi olarak belirtilen saat. Date
    • text zaman, dize olarak belirtilir. Zaman, 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 belirtildiği şekilde bu hatta seyahat edilecek yönü belirtir. Bu genellikle son duraktır.
  • headway (varsa): Bu, aynı duraktan şu anda yapılan kalkışlar arasındaki beklenen saniye sayısını belirtir. Örneğin, headway değeri 600 ise otobüsü kaçırmanız durumunda on dakika beklemeniz gerekir.
  • line, bu adımda kullanılan toplu taşıma hattı hakkında bilgi içeren bir TransitLine nesne değişmezi içerir. TransitLine, TransitLine referans dokümanlarında açıklanan diğer özelliklerin yanı sıra satırın adını ve operatörünü sağlar.
  • num_stops, bu adımdaki durak sayısını içerir. Varış durağı dahildir ancak kalkış durağı dahil değildir. Örneğin, yol tarifiniz A durağından başlayıp B ve C duraklarından geçerek D durağına varıyorsa 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. Ör. "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 satır numarasıdır.
  • agencies, tek bir TransitAgency nesnesi içeren bir dizidir. TransitAgency nesnesi, aşağıdaki özellikler de dahil olmak üzere bu satırın operatörü hakkında bilgi sağlar:
    • name, toplu taşıma operatörünün adını içerir.
    • phone, toplu taşıma acentesinin telefon numarasını içerir.
    • url, toplu taşıma operatörünün URL'sini içerir.

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

  • url, toplu taşıma acentesi 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 şehir, araç türüne göre değişen genel simgeler kullanır. New York metro sistemi gibi bazı toplu taşıma hatlarının kendine özgü simgeleri vardır.
  • color, bu toplu taşıma için tabelalarda yaygın olarak kullanılan rengi içerir. Renk, #FF0033 gibi bir onaltılık dize olarak belirtilir.
  • text_color, bu satırın tabelasında yaygın olarak kullanılan 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ırdaki aracın adını içerir. ör. "Metro."
    • type, bu satırda kullanılan araç 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 genellikle ilişkilendirilen simgeye ait bir URL içerir.
    • local_icon, yerel ulaşım tabelalarına göre bu araç türüyle ilişkili simgesinin 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 Yerü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 Şehirlerarası otobüs.
VehicleType.TROLLEYBUS Troleybüs.
VehicleType.SHARE_TAXI Paylaşım taksi, rotasının herhangi bir yerinde yolcu alıp bırakabilen bir tür otobüstür.
VehicleType.FERRY Feribot.
VehicleType.CABLE_CAR Genellikle yerde kabloyla çalışan bir araç. Teleferikler VehicleType.GONDOLA_LIFT türü olabilir.
VehicleType.GONDOLA_LIFT Teleferik.
VehicleType.FUNICULAR Dik yokuşları kabloyla yukarı çekilen araç. Teleferik genellikle iki vagondan oluşur ve her vagon 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.

Inspecting DirectionsResults

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şturmaya çalışıyorsanız seyahat sonuçlarını sunan toplu taşıma acentelerinin adlarını ve URL'lerini göstermeniz gerekir.

Aşağıdaki örnekte, New York'taki belirli turistik yerlere ait yürüyüş yolları gösterilmektedir. Her adıma işaretçi eklemek için rotanın DirectionsStep öğesini inceler ve ilgili adıma yönelik eğitici metin içeren bir InfoWindow öğesine bilgi ekleriz.

Not: Yürüyüş yollarını hesapladığımız için kullanıcıya yönelik uyarıları da 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 Yol Noktalarını Kullanma

DirectionsRequest içinde belirtildiği gibi, yaya, bisiklet veya araba yol tarifleri için Yol Tarifleri hizmetini kullanarak rotaları hesaplarken yol işaretleri (DirectionsWaypoint türü) de belirtebilirsiniz. Ara noktalar, toplu taşıma yol tarifleri için kullanılamaz. Dönüm noktaları, ek konumlar üzerinden rotaları hesaplamanıza olanak tanır. Bu durumda, döndürülen rota belirtilen dönüm noktalarından geçer.

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

  • location (zorunlu) yol noktasının adresini belirtir.
  • stopover (isteğe bağlı), bu yol noktasının rotadaki gerçek bir durak (true) olup olmadığını veya yalnızca belirtilen konumdan rota oluşturma tercihi (false) olup olmadığını belirtir. Molalar varsayılan olarak true olur.

Varsayılan olarak, Yol Tarifleri hizmeti, sağlanan yol işaretlerini verilen sırayla kullanarak bir rota hesaplar. İsteğe bağlı olarak, optimizeWaypoints: true hizmetini DirectionsRequest içinde ileterek yol tarifi hizmetinin, yol işaretlerini daha verimli bir sırayla yeniden düzenleyerek sağlanan rotayı optimize etmesine izin verebilirsiniz. (Bu optimizasyon, satıcının seyahat problemi'nin bir uygulamasıdır.) Seyahat süresi, optimize edilen birincil faktördür ancak en verimli rotaya karar verirken mesafe, dönüş sayısı ve daha birçok faktör dikkate alınabilir. Tüm yol işaretleri, rotalarını optimize etmek için Yol tarifi hizmetinin mola vermesi gereken noktalar olmalıdır.

Yönler hizmetine yol işaretlerinin sırasını optimize etmesini söylerseniz bu işaretlerin sırası, DirectionsResult nesnesi içindeki waypoint_order alanında döndürülür.

Aşağıdaki örnekte, çeşitli başlangıç noktaları, bitiş noktaları ve yol noktaları kullanılarak ABD'de ülke genelindeki rotalar hesaplanmıştır. (Birden fazla yol noktası seçmek için listedeki öğeleri seçerken Ctrl tuşuna basarak tıklayın.) Her rotanın başlangıç ve bitiş noktası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;

Dönüm 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'de Yol Tarifi Hizmeti kullanılırken izin verilen maksimum ara nokta sayısı, başlangıç ve varış noktalarının yanı sıra 25'tir. Sınırlar, Directions API web hizmeti için de aynıdır.
  • Directions API web hizmeti için müşterilere 25 ara noktanın yanı sıra başlangıç ve varış noktası eklemelerine izin verilir.
  • Google Haritalar Platformu Premium Plan müşterileri, başlangıç ve varış noktası dahil olmak üzere 25 yol işareti kullanabilir.
  • Toplu taşıma yol tarifleri için ara noktalar desteklenmez.

Sürüklenebilir Yol Tarifleri

Kullanıcılar, DirectionsRenderer kullanılarak gösterilen bisiklet, yürüyüş veya sürüş yol tariflerini dinamik olarak değiştirebilir (sürükleyebilir). Böylece kullanıcılar, haritadaki yolları tıklayıp sürükleyerek rotaları seçebilir ve değiştirebilir. Bir oluşturucunun ekranının sürüklenebilir yönlere izin verip vermediğini, draggable mülkünü true olarak ayarlayarak belirtirsiniz. Toplu taşıma yol tarifleri sürüklenemez.

Yönler sürüklenebilir olduğunda kullanıcı, oluşturulan sonucun yolundaki (veya yol işaretindeki) 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. Özellik kullanıma sunulduğunda, haritaya geçiş için bir yol noktası eklenir (küçük beyaz bir işaretçiyle gösterilir). Bir yol segmentini seçip taşımak, yolun ilgili bölümünü değiştirir. Bir yol işaretçisini (başlangıç ve bitiş noktaları dahil) seçip taşımak ise yolun, söz konusu yol işaretçisinden geçen bölümlerini değiştirir.

Sürükle-bırak yol tarifleri istemci tarafında değiştirilip oluşturulduğundan, kullanıcı görüntülenen yol tariflerini değiştirdiğinde bilgilendirilmek için DirectionsRenderer üzerinde directions_changed etkinliğini izleyip işleyebilirsiniz.

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 aşamalarının toplam mesafesini güncellemek için directions_changed etkinliğini izler.

TypeScript

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

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

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

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

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

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

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

  if (!myroute) {
    return;
  }

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

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

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

JavaScript

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

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

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

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

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

  if (!myroute) {
    return;
  }

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

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

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

Örneği Deneyin