Yol Tarifi Hizmeti

Avrupa Ekonomik Alanı (AEA) geliştiricileri
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 rota 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ı gibi diğer faktörler de dikkate alınabilir. Bu yol tarifi sonuçlarını kendiniz işleyebilir veya bu sonuçları oluşturmak için DirectionsRenderer nesnesini kullanabilirsiniz.

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

Yol tarifi hizmeti, bir dizi ara nokta kullanarak çok parçalı yol tarifleri döndürebilir. Yol tarifleri, haritada rotayı çizen bir çoklu çizgi çizimi olarak veya ek olarak bir <div> öğesi içindeki bir dizi metin açıklaması olarak gösterilir (örneğin, "Williamsburg Köprüsü rampasına sağa dönün").

Başlarken

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

Etkinleştirilen API'ler listenizi görüntülemek için:

  1. Google Cloud Console'a gidin.
  2. Bir proje seçin düğmesini tıklayın, ardından Maps JavaScript API için ayarladığınız 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 listelenmemişse 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

Yol Tarifi hizmetinin kullanımı, Yol Tarifi API'si (Eski) için açıklanan politikalara uygun olmalıdır.

Yol tarifi istekleri

Google Haritalar API'sinin harici bir sunucuya çağrı yapması gerektiğinden Yol Tarifi hizmetine erişim eşzamansızdır. Bu nedenle, istek tamamlandığında 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.

Haritalar JavaScript API'sinde yol tariflerini kullanmak için DirectionsService türünde bir nesne oluşturun ve DirectionsService.route() işlevini çağırarak Yol Tarifi hizmetine istek gönderin. Bu işlev, giriş terimlerini içeren bir DirectionsRequest nesne değişmezini ve yanıt alındığında yürütülecek bir geri çağırma yöntemini iletir.

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

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

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

  • origin (zorunlu), yol tariflerinin hesaplanacağı başlangıç konumunu belirtir. Bu değer, String (ör. "Chicago, IL"), LatLng değeri veya Yer nesnesi olarak belirtilebilir. Place nesnesi kullanıyorsanız yer kimliği, sorgu dizesi veya LatLng konum 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 Tarifleri başlıklı makaleyi inceleyin.
  • destination (zorunlu), yol tariflerinin hesaplanacağı bitiş konumunu belirtir. Seçenekler, yukarıda açıklanan origin alanı için kullanılan seçeneklerle aynıdır.
  • travelMode (zorunlu), yol tarifi hesaplanırken hangi ulaşım modunun kullanılacağını belirtir. Geçerli değerler, aşağıdaki Ulaşım Türleri 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österirken hangi birim sisteminin kullanılacağını belirtir. Geçerli değerler, aşağıdaki Birim Sistemleri bölümünde belirtilmiştir.

  • waypoints[] (isteğe bağlı), DirectionsWaypoint dizisini belirtir. Ara noktalar, rotayı belirtilen konumlardan geçirecek şekilde değiştirir. Ara nokta, aşağıdaki alanlara sahip bir nesne değişmez değeri olarak belirtilir:

    • location, LatLng olarak, Yer nesnesi olarak veya coğrafi olarak kodlanacak bir String olarak ara noktanın konumunu belirtir.
    • stopover, ara noktanın rotada bir durak olduğunu gösteren bir boole değeridir. Bu değer, 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ıraya göre yeniden düzenleyerek optimize edilebileceğini belirtir. Bu durumda, true, Yol Tarifi hizmeti, yeniden sıralanan waypoints değerini 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 olarak ayarlandığında Yol Tarifi hizmetinin yanıtta birden fazla rota alternatifi sağlayabileceğini belirtir. Rota alternatifleri sunmanın sunucudan alınan yanıt süresini uzatabileceğini unutmayın. Bu özellik yalnızca ara noktası 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 gösterir.
  • avoidHighways (isteğe bağlı) true olarak ayarlandığında, hesaplanan rotaların mümkünse büyük otoyollardan kaçınması gerektiğini gösterir.
  • avoidTolls (isteğe bağlı) true olarak ayarlandığında, hesaplanan rotaların mümkünse paralı yollardan kaçınması gerektiğini gösterir.
  • region (isteğe bağlı), iki karakterlik bir değer olarak ccTLD ("üst düzey alan") şeklinde belirtilen bölge kodunu belirtir. (Daha fazla bilgi için aşağıdaki Bölgesel Önyargı 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 tarifini hesaplarken hangi ulaşım modunun kullanılacağını belirtmeniz gerekir. Şu anda aşağıdaki seyahat modları desteklenmektedir:

  • DRIVING (Varsayılan) Karayolu ağını kullanarak standart arabayla yol tariflerini gösterir.
  • BICYCLING bisiklet yolları ve tercih edilen caddeler üzerinden bisikletle yol tarifi isteğinde bulunuyor.
  • TRANSIT toplu taşıma rotalarıyla 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. Bu yön türünün kullanılamadığı bir bölge için yol tarifi isterseniz yanıt DirectionsStatus="ZERO_RESULTS" değerini döndürür.

Not: Yaya yol tarifleri net yaya yollarını içermeyebilir. Bu nedenle, yaya yol tarifleri DirectionsResult içinde uyarılar gösterir. 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 isterken avoidHighways, avoidTolls, waypoints[] ve optimizeWaypoints seçenekleri yoksayılır. TransitOptions nesne değişmez değeri aracılığıyla toplu taşıma araçlarına özel rota seçenekleri belirtebilirsiniz.

Toplu taşımayla yol tarifleri zamana duyarlıdır. Yalnızca gelecekteki zamanlar için yol tarifleri 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ı belirtilmişse kalkış zamanı yoksayılır.
  • departureTime (isteğe bağlı), istenen kalkış zamanını Date nesnesi olarak belirtir. arrivalTime belirtilmişse departureTime yoksayılır. departureTime veya arrivalTime için değer belirtilmezse varsayılan olarak şu anki zaman kullanılır.
  • modes[] (isteğe bağlı), bir veya daha fazla TransitMode nesne değişmezi içeren bir dizidir. Bu alan yalnızca istekte API anahtarı varsa eklenebilir. Her TransitMode, tercih edilen bir toplu taşıma şeklini 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 gösterir.
    • SUBWAY, hesaplanan rotada metroyla seyahatin tercih edilmesi gerektiğini gösterir.
    • 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ı), transit rotalarıyla ilgili tercihleri belirtir. Bu seçeneği kullanarak, API'nin seçtiği varsayılan en iyi rotayı kabul etmek yerine döndürülen seçenekleri etkileyebilirsiniz. Bu alan yalnızca istek bir API anahtarı içeriyorsa 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üş tercih edilmesi gerektiğini gösterir.

Aşağıda, toplu taşıma aracına göre bir DirectionsRequest örneği gösterilmektedir:

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

Sürüş Seçenekleri

DrivingOptions nesnesi aracılığıyla araba yol tarifleri için rota seçenekleri belirleyebilirsiniz.

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

{
  departureTime: Date,
  trafficModel: TrafficModel
}

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

  • departureTime (drivingOptions nesne değişmezinin geçerli olması için gereklidir), istenen kalkış zamanını Date nesnesi olarak belirtir. Değer, geçerli zamana veya gelecekteki bir zamana ayarlanmalıdır. Geçmişte olamaz. (API, tüm tarihleri UTC'ye dönüştürerek farklı saat dilimlerinde tutarlı bir şekilde işlenmesini sağlar.) Google Haritalar Platformu Premium Planı müşterileri için, isteğe departureTime dahil ederseniz API, o sırada beklenen trafik koşulları göz önünde bulundurularak en iyi rotayı döndürür ve yanıta trafikteki tahmini süreyi (duration_in_traffic) ekler. 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ı), trafikteki 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 dayalı olarak trafikteki 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 gösterir. Canlı trafik, departureTime şu ana ne kadar yakınsa o kadar önemli hale gelir.
    • pessimistic, döndürülen duration_in_traffic değerinin çoğu günde gerçek seyahat süresinden daha uzun olması gerektiğini 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ünde gerçek seyahat süresinden daha kısa olması gerektiğini gösterir. Ancak zaman zaman trafik koşullarının özellikle iyi olduğu günlerde bu değerden daha hızlı olabilir.

Aşağıda arabayla yol tarifleri 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 bulunduğu ülkenin veya bölgenin birim sistemi kullanılarak hesaplanır ve gösterilir. (Not: Adres yerine enlem/boylam koordinatları kullanılarak ifade edilen kaynaklar her zaman varsayılan olarak metrik birimlere ayarlanır.) Örneğin, "Chicago, IL" ile "Toronto, ONT" arasındaki bir rotada sonuçlar mil cinsinden gösterilirken tersi rotada sonuçlar kilometre cinsinden gösterilir. Aşağıdaki UnitSystem değerlerden birini kullanarak isteğin içinde açıkça bir birim sistemi ayarlayarak bu birim sistemini geçersiz kılabilirsiniz:

  • UnitSystem.METRIC, metrik sistemin kullanımını belirtir. Mesafeler kilometre cinsinden gösterilir.
  • UnitSystem.IMPERIAL, İngiliz birim sisteminin kullanılacağı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ılara gösterilmeyen ve her zaman metre cinsinden ifade edilen mesafe değerlerini de içerir.

Yol tarifleri için bölge tercihi

Google Haritalar API'si Directions Hizmeti, JavaScript bootstrap'i 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ülü bir alan adı ayarlar.) Bootstrap'i farklı bir desteklenen alandan yüklerseniz bu alandan etkilenen sonuçlar elde edersiniz. Örneğin, "San Francisco" aramaları, https://maps.googleapis.com/ (ABD) yükleyen uygulamalardan farklı sonuçlar döndürebilir. http://maps.google.es/ (İspanya) yükleyen uygulamalardan da farklı sonuçlar döndürebilir.

region parametresini kullanarak Yol Tarifi hizmetini belirli bir bölgeye yönelik sonuçlar döndürecek şekilde de ayarlayabilirsiniz. Bu parametre, iki karakterli (sayısal olmayan) Unicode bölge alt etiketi olarak belirtilen bir bölge kodu alır. Çoğu durumda bu etiketler, doğrudan ccTLD ("üst düzey alan") iki karakterli değerlerle eşlenir. Örneğin, "co.uk" için "uk". Bazı durumlarda region etiketi, ISO-3166-1 kodlarını da destekler. Bu kodlar, bazen ccTLD değerlerinden farklıdır (ö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 bu durum, isteğin başarısız olmasına neden olabilir.
  • Yalnızca iki karakterli bölge alt etiketlerini (Unicode CLDR biçimi) kullanın. Diğer tüm girişler hataya neden olur.

Bölgeye göre önyargı yalnızca yol tariflerinin desteklendiği ülkeler ve bölgeler için desteklenir. Yol Tarifi API'sinin (Eski) uluslararası kapsamını görmek için Google Haritalar Platformu Kapsam Ayrıntıları başlıklı makaleyi inceleyin.

Oluşturma Yönleri

DirectionsService ile route() yöntemi kullanılarak yol tarifi isteği başlatmak için hizmet isteği tamamlandığında yürütülen bir geri çağırma işlevinin iletilmesi gerekir. Bu geri çağırma, yanıtta DirectionsResult ve DirectionsStatus kodunu döndürür.

Yol Tarifi Sorgusunun Durumu

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

  • OK, yanıtın geçerli bir DirectionsResult içerdiğini gösterir.
  • NOT_FOUND, isteğin kaynağında, hedefinde veya ara noktalarında belirtilen konumlardan en az birinin coğrafi olarak kodlanamadığını gösterir.
  • ZERO_RESULTS, başlangıç ve varış noktası arasında rota bulunamadığını gösterir.
  • MAX_WAYPOINTS_EXCEEDED, DirectionsRequest içinde çok fazla DirectionsWaypoint alanı sağlandığını gösterir. Yol noktalarıyla ilgili sınırlar 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 talimatlar döndürüldüğünde oluşur. Ara nokta, dönüş veya talimat sayısını azaltmayı deneyin.
  • INVALID_REQUEST, sağlanan DirectionsRequest öğesinin 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 aktarım 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, sunucu hatası nedeniyle bir 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'u görüntüleme

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

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

  1. DirectionsRenderer nesnesi oluşturun.
  2. Oluşturucuda setMap() işlevini çağırarak bunu iletilen haritaya bağlayın.
  3. Oluşturucuda setDirections() işlevini çağırın ve yukarıda belirtildiği gibi DirectionsResult işlevini iletin. Oluşturucu bir MVCObject olduğundan, özelliklerinde yapılan değişiklikleri otomatik olarak algılar ve ilişkili yol tarifleri değiştiğinde haritayı günceller.

Aşağıdaki örnekte, başlangıç ve hedef noktaları açılır listelerdeki "start" ve "end" değerleriyle belirlenen Route 66 üzerindeki iki konum arasındaki yol tarifi hesaplanmaktadır. DirectionsRenderer işaretleri, belirtilen konumlar arasındaki çoklu çizginin gösterilmesini ve başlangıç, varış noktası ile varsa ara noktalara işaretçi yerleştirilmesini sağlar.

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, CA'daki Haight-Ashbury ile Ocean Beach arasında farklı ulaşım 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

Bir DirectionsRenderer yalnızca çoklu çizginin ve ilişkili işaretçilerin gösterimini sağlamakla kalmaz, aynı zamanda yol tariflerinin metin olarak adım adım gösterilmesini de sağlar. Bunu yapmak için setPanel() işlevini DirectionsRenderer cihazınızda çağırın ve bu bilgilerin gösterileceği <div> öğesini iletin. Bunu yaptığınızda uygun telif hakkı bilgilerini ve sonuçla ilişkili olabilecek uyarıları da gösterirsiniz.

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

Aşağıdaki örnek, yukarıda gösterilenle aynıdır ancak yol tariflerini göstermek 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 adresine bir rota 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ış noktası ve ara noktaların coğrafi kodlamasıyla ilgili ayrıntıları içeren bir DirectionsGeocodedWaypoint nesne dizisi içerir.
  • routes[], DirectionsRoute nesneleri dizisini içerir. Her rota, DirectionsRequest içinde belirtilen başlangıç noktasından varış noktasına gitmenin bir yolunu gösterir. Genel olarak, isteğin provideRouteAlternatives alanı true olarak ayarlanmadığı sürece herhangi bir istek için yalnızca bir rota döndürülür. Bu durumda birden fazla rota döndürülebilir.

Not: via_waypoint özelliğinin desteği sonlandırıldı ve alternatif rotalarda kullanılamaz. Sürüm 3.27, alternatif rotalara ek ara noktalar 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 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 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 mevcut olmayan bir address iletilirse ortaya çıkabilir.
  • partial_match, kodlayıcının istenen adresin bir kısmını eşleştirebilmesine rağmen orijinal istek için tam bir eşleşme döndürmediğini gösterir. Yazım hataları ve/veya eksik adres olup olmadığını kontrol etmek için orijinal isteği inceleyebilirsiniz.

    Kısmi eşleşmeler en sık, istekte ilettiğiniz yerleşim biriminde bulunmayan sokak adresleri için gerçekleşir. Bir istek aynı yerleşim yerindeki 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 birlikte kullanılabilir. Örneğin, telefon numarası, çalışma saatleri, kullanıcı yorumları gibi yerel bir işletmeyle ilgili ayrıntıları almak için place_id ile Google Places API kitaplığını kullanabilirsiniz. Yer kimliğine genel bakış başlıklı makaleyi inceleyin.
  • types[], döndürülen sonucun türünü gösteren bir dizidir. Bu dizi, sonuçta döndürülen özellik türünü tanımlayan sıfır veya daha fazla etiket kümesi içerir. Örneğin, "Chicago" coğrafi kodu, "Chicago"nun bir şehir olduğunu belirten "locality" 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ı. Bir rotanın artık yalnızca ana gezinin bir ayağını değil, başlangıçtan bitişe kadar olan tüm yolculuğu ifade ettiğini unutmayın.

DirectionsRoute, belirtilen başlangıç ve varış noktasına ait tek bir sonuç içerir. Bu rota, herhangi bir ara nokta belirtilip belirtilmediğine bağlı olarak bir veya daha fazla etaptan (DirectionsLeg türünde) oluşabilir. Ayrıca, rotada telif hakkı ve uyarı bilgileri de yer alır. Bu bilgiler, rota bilgilerine ek olarak kullanıcıya gösterilmelidir.

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

  • legs[], DirectionsLeg nesnelerinin bir dizisini içerir. Bu nesnelerin her biri, verilen rota içindeki iki konumdan rotanın bir ayağıyla ilgili bilgileri içerir. Belirtilen her ara nokta veya hedef için ayrı bir etap bulunur. (Hiçbir ara nokta içermeyen bir rotada tam olarak bir DirectionsLeg bulunur.) Her etap, bir dizi DirectionStep'den oluşur.
  • waypoint_order, hesaplanan rotadaki tüm ara noktaların sırasını gösteren bir dizi içerir. Bu dizi, DirectionsRequest iletilirse değiştirilmiş bir sıra içerebilir. optimizeWaypoints: true.
  • overview_path, sonuçta elde edilen yol tariflerinin yaklaşık (düzeltilmiş) yolunu gösteren bir LatLng dizisi içerir.
  • overview_polyline, rotanın kodlanmış çoklu çizgi gösterimini içeren tek bir points nesnesi içerir. Bu çoklu çizgi, sonuçta elde edilen yol tariflerinin yaklaşık (düzeltilmiş) yoludur.
  • bounds, bu belirli 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 için ve yalnızca tüm toplu taşıma ayakları için ücret bilgilerinin mevcut olduğu rotalarda döndürülür. Bu bilgiler arasında şunlar yer alır:
    • currency: Tutarın ifade edildiği para birimini gösteren bir ISO 4217 para birimi kodu.
    • value: Yukarıda belirtilen para biriminde toplam ücret tutarı.

Yol Tarifi Bacakları

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

DirectionsLeg, hesaplanan rotada başlangıç noktasından varış noktasına giden bir yolculuğun tek bir ayağını tanımlar. Ara nokta içermeyen rotalar tek bir "etaptan" oluşur. Bir veya daha fazla ara nokta tanımlayan rotalar ise yolculuğun belirli etaplarına karşılık gelen bir veya daha fazla etaptan oluşur.

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

  • steps[], yolculuğun her bir ayağının ayrı adımlarıyla ilgili bilgileri gösteren bir DirectionsStep nesne dizisi içerir.
  • distance, bu ayağın kat ettiği toplam mesafeyi aşağıdaki biçimde bir Distance nesnesi olarak gösterir:

    • value, mesafeyi metre cinsinden gösterir.
    • text, mesafenin dize gösterimini içerir. Bu mesafe, varsayılan olarak başlangıç noktasında kullanılan birimlerle gösterilir. (Örneğin, ABD'deki herhangi bir başlangıç noktası için mil kullanılır.) Orijinal sorguda UnitSystem birimini belirterek 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 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, süreyi saniye cinsinden gösterir.
    • text, sürenin dize gösterimini içerir.

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

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

    • İstek, aktarma noktaları içermiyor. Yani, stopover değerinin true olduğu ara noktaları içermez.
    • İstek özellikle arabayla yol tarifi içindir. mode, driving olarak ayarlanmıştır.
    • departureTime, istekteki drivingOptions alanına dahil edilir.
    • İstenen rota için trafik koşulları bilgisi mevcut.

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

    • value, süreyi saniye cinsinden gösterir.
    • text, sürenin okunabilir bir gösterimini içerir.
  • arrival_time, bu etap 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ğe sahip bir Time nesnesi olarak döndürülür:
    • value JavaScript Date nesnesi olarak belirtilen saat.
    • text dize olarak belirtilen saat. Saat, aktarma durağının saat diliminde gösterilir.
    • time_zone, bu istasyonun saat dilimini içerir. Değer, IANA Saat Dilimi Veritabanı'nda tanımlanan saat diliminin adıdır (ör. "America/New_York").
  • departure_time, bu ayağın tahmini kalkış zamanını Time nesnesi olarak belirtir. departure_time yalnızca toplu taşıma yol tarifleri için kullanılabilir.
  • start_location, bu ayağın kaynağının LatLng değerini içerir. Directions Web Hizmeti, konumlar arasındaki rotaları başlangıç ve bitiş noktalarındaki en yakın ulaşım seçeneğini (genellikle bir yol) kullanarak hesapladığı için, örneğin 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 rotaları 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ıların okuyabileceği adresi (genellikle açık adres) içerir.

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

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

Yol Tarifi Adımları

DirectionsStep, bir yol tarifinin en küçük birimidir ve yolculukla ilgili belirli bir talimatı açıklayan tek bir adımı içerir. Ör. "W. kavşağından sola dön. 4th St." Bu adım yalnızca talimatı açıklamakla kalmaz, aynı zamanda bu adımın sonraki adımla ilişkisine dair mesafe ve süre bilgilerini de içerir. Örneğin, "I-80 Batı'ya katılın" olarak belirtilen bir adımda "37 mil" ve "40 dakika" süresi yer alabilir. 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 hizmeti kullanılırken steps dizisi, transit nesnesi biçiminde ek toplu taşıma bilgilerini içerir. Yol tarifinde birden fazla ulaşım modu varsa yürüyüş veya sürüş adımları için ayrıntılı yol tarifleri steps[] dizisinde sağlanır. Örneğin, yürüme adımında başlangıç ve bitiş konumlarındaki yol tarifleri yer alır: "Innes Ave & Fitch St'e yürü". Bu adımda, steps[] dizisindeki rota için ayrıntılı yaya yol tarifleri yer alır. Örneğin: "Kuzeybatıya doğru ilerleyin", "Arelious Walker'a sola dönün" ve "Innes Ave'ye sola dönün".

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

  • instructions, metin dizesi içinde bu adımla ilgili talimatlar içerir.
  • distance, bu adımda bir 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 sonraki adıma kadar olan sürede adımı gerçekleştirmek için gereken sürenin tahmini değerini Duration nesnesi olarak içerir. (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 LatLngcoğrafi kodunu içerir.
  • end_location, bu adımın bitiş noktasının LatLng değerini içerir.
  • polyline, adımın kodlanmış çoklu çizgi gösterimini içeren tek bir points nesnesi içerir. Bu çoklu çizgi, adımın yaklaşık (düzeltilmiş) yoludur.
  • Toplu taşıma yol tariflerindeki yürüyüş veya sürüş adımlarıyla ilgili ayrıntılı yol tarifleri içeren steps[] a 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 sürecini açıklayan bir LatLngs dizisi içerir.
  • transit, varış ve kalkış saatleri ile toplu taşıma hattının adı gibi toplu taşıma araçlarına özel bilgileri içerir.

Toplu Taşıma Bilgilerine Özgü Bilgiler

Toplu taşıma yol tarifleri, diğer ulaşım türleri için geçerli olmayan ek bilgiler döndürür. Bu ek özellikler, TransitDetails nesnesi aracılığıyla kullanıma sunulur ve DirectionsStep özelliği olarak döndürülür. TransitDetails nesnesinden, TransitStop, TransitLine, TransitAgency ve VehicleType nesneleriyle ilgili ek bilgilere aşağıdaki şekilde erişebilirsiniz.

Toplu Taşıma Ayrıntıları

TransitDetails nesnesi aşağıdaki özellikleri kullanıma sunar:

  • arrival_stop, aşağıdaki özelliklere sahip varış istasyonunu/durağını temsil eden 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 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 saat. Saat, aktarma durağının saat diliminde gösterilir.
    • time_zone, bu istasyonun saat dilimini içerir. Değer, IANA Saat Dilimi Veritabanı'nda tanımlanan saat diliminin adıdır (ör. "America/New_York").
  • departure_time, kalkış saatini Time nesnesi olarak belirtir.
  • headsign, araçta veya kalkış durağında işaretlendiği gibi bu hat üzerinde seyahat edilecek yönü belirtir. Bu istasyon genellikle son durak olur.
  • headway Bu değer, varsa bu saatte aynı duraktan 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şmezi içerir. TransitLine, hattın adını ve operatörünü, TransitLine referans dokümanlarında açıklanan diğer özelliklerle birlikte sağlar.
  • num_stops, bu adımdaki durak sayısını içerir. Varış durağı dahildir ancak kalkış durağı dahil değildir. Ö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 sonucunu döndürür.

Toplu Taşıma Hattı

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

  • 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 bilgiler 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 kuruluşunun URL'sini içerir.

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

  • url, transit 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 aracının tabelalarında yaygın olarak kullanılan rengi içerir. Renk, #FF0033 gibi bir onaltılık dize olarak belirtilir.
  • text_color, bu 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çerir. ör. "Subway."
    • type, bu hatta kullanılan araç türünü içerir. Desteklenen değerlerin tam listesi için Araç Türü dokümanına bakın.
    • icon, genellikle bu araç türüyle ilişkilendirilen simgenin URL'sini içerir.
    • local_icon, yerel ulaşım işaretlerine göre bu araç türüyle ilişkili simgenin URL'sini içerir.

Araç Türü

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

Değer Tanım
VehicleType.RAIL Reklam sütunu
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 Paylaşımlı taksi, rotası üzerindeki herhangi bir yerde yolcu bırakma ve alma özelliğine sahip bir otobüs türüdür.
VehicleType.FERRY Feribot
VehicleType.CABLE_CAR Genellikle yerde kablo üzerinde hareket eden bir araç. Teleferik kabloları VehicleType.GONDOLA_LIFT türünde olabilir.
VehicleType.GONDOLA_LIFT Teleferik.
VehicleType.FUNICULAR Kabloyla dik bir yokuş yukarı çekilen araç. Füniküler genellikle iki vagondan oluşur. Her vagon, diğer vagon 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 öğesini 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: DirectionsRenderer nesnesini kullanmak yerine toplu taşıma yol tariflerini manuel olarak oluşturuyorsanız yolculuk sonuçlarına hizmet veren toplu taşıma kuruluşlarının adlarını ve URL'lerini göstermeniz gerekir.

Aşağıdaki örnekte, New York'taki belirli turistik yerlere yaya yol tarifleri çiziliyor. Her adım için işaretçi eklemek üzere rotanın DirectionsStep bölümünü inceleriz ve InfoWindow bölümüne, ilgili adımın talimat metnini içeren bilgileri ekleriz.

Not: Yaya yol tarifi hesapladığımız için kullanıcıya yönelik uyarıları ayrı bir <div> panelde de gösteririz.

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

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

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

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

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

function calcRoute() {

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

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

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

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

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

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

HTML gövdesinde:

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

Örneği görüntüleyin

Rotalarda ara noktaları kullanma

DirectionsRequest içinde belirtildiği gibi, yaya, bisiklet veya araba yol tarifleri için Directions hizmetini kullanarak rotaları hesaplarken ara noktalar (DirectionsWaypoint türünde) da belirtebilirsiniz. Ara noktalar, toplu taşıma yol tariflerinde 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.

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

  • location (zorunlu), ara noktanın adresini belirtir.
  • stopover (isteğe bağlı), bu ara noktanın rotada gerçek bir durak (true) mı yoksa yalnızca belirtilen konumdan geçme tercihi (false) mi olduğunu gösterir. Duraklar varsayılan olarak true'dır.
ile sonuçlanabilir.

Yol Tarifi hizmeti, varsayılan olarak sağlanan ara noktaları belirtilen sırayla kullanarak bir rota hesaplar. İsteğe bağlı olarak, Yol Tarifi hizmetinin sağlanan rotayı ara noktaları daha verimli bir sırayla yeniden düzenleyerek optimize etmesine izin vermek için DirectionsRequest içinde optimizeWaypoints: true parametresini iletebilirsiniz. (Bu optimizasyon, gezgin satıcı sorununa yönelik bir uygulamadır.) Seyahat süresi, optimize edilen birincil faktördür ancak hangi rotanın en verimli olduğuna karar verilirken mesafe, dönüş sayısı ve daha birçok faktör de dikkate alınabilir. Yol tarifi hizmetinin rotayı optimize edebilmesi için tüm ara noktalar durak olmalıdır.

Yol Tarifi hizmetine ara noktalarının sırasını optimize etmesini söylerseniz 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'deki ülkeler arası rotalar hesaplanmaktadır. (Birden fazla yol noktası seçmek için listedeki öğeleri seçerken Ctrl-Tıkla'ya basın.) Her rotanın başlangıç ve varış noktasıyla ilgili metni sağlamak için routes.start_address ve routes.end_address değerlerini 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 Noktalarla İlgili 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 Directions hizmeti kullanılırken izin verilen maksimum ara nokta sayısı, başlangıç ve hedef noktası hariç 25'tir. Sınırlar, Directions API (Legacy) web hizmeti için de aynıdır.
  • Directions API (Legacy) web hizmeti için müşterilerin başlangıç ve hedef noktaya ek olarak 25 ara nokta kullanmasına izin verilir.
  • Google Haritalar Platformu Premium Planı müşterileri, başlangıç ve hedef noktasıyla birlikte 25 ara nokta kullanabilir.
  • Toplu taşıma yol tariflerinde ara noktalar desteklenmez.

Sürüklenebilir Yol Tarifleri

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

Yol tarifleri sürüklenebilir olduğunda kullanıcılar, oluşturulan sonucun yolundaki (veya ara nokta) 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. Bu özellik kullanıma sunulduğunda haritaya geçiş amaçlı bir ara nokta eklenecek (küçük beyaz bir işaretçiyle gösterilir). Bir rota segmentini seçip taşımak rotanın o ayağını değiştirirken bir ara nokta işaretçisini (başlangıç ve bitiş noktaları dahil) seçip taşımak rotanın o ara noktadan geçen ayaklarını değiştirir.

Sürüklenerek taşınabilen rotalar istemci tarafında değiştirilip oluşturulduğundan, kullanıcı görüntülenen rotaları değiştirdiğinde bildirim almak için directions_changed etkinliğini DirectionsRenderer üzerinde 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 gezi gösterilmektedir. Kod, yolculuğun tüm etapları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