computeRoutes yöntemi (REST) ve ComputeRoutes yönteminde (gRPC) her ikisi de tıklayın. Bu API'ler iki tür çoklu çizgi döndürür:
Temel çoklu çizgi (varsayılan), trafik içermeyen bir rotayı temsil eder bilginin kaybolmamasına dikkat edin. Temel bir çoklu çizgi döndüren istekler Rotalar Temel ücreti üzerinden faturalandırılır. Daha fazla bilgi: faturalandırması ile ilgili verileri sunar.
Trafiğe duyarlı çoklu çizgi, trafik koşulları hakkında bilgiler içerir ilerler. Trafik koşulları hız cinsinden ifade edilir belirli bir aralıkta geçerli olan kategoriler (
NORMAL
,SLOW
,TRAFFIC_JAM
) görünür. Trafiğe duyarlı çoklu çizgi istekleri Rotalar için tercih edilen ücret. Şu hizmetler için faturalandırma hakkında daha fazla bilgi edinin: Routes API'yi seçin. Ayrıntılar için bkz. Çoklu çizgi kalitesini yapılandırma
Çoklu çizgiler hakkında daha fazla bilgi için:
Etkileşimli Çoklu Çizgi Kodlayıcı Yardımcı Programı Kullanıcı arayüzünde kodlanmış çoklu çizgiler oluşturabilmenizi veya çoklu çizgilerin kodunu çözerek bir haritadır. Örneğin, aşağıdaki kodu kullanabilirsiniz.
Rota, ayak veya adım için temel bir çoklu çizgi isteyin
Çoklu çizgi, bir çoklu çizgiyle temsil edilir. Çoklu çizgi (REST) veya Çoklu çizgi (gRPC) nesnesi. Yanıtta rota, bacak ve adım düzeyinde bir çoklu çizgi döndürebilirsiniz.
Döndürülecek çoklu çizgiyi belirtmek için yanıt alanı maskesi:
Rota düzeyinde, şunları ekleyerek yanıtta bir çoklu çizgi döndürün:
routes.polyline
(yanıt alanı maskesi) girilmelidir.Bacak seviyesinde, bacağın her bacağı için yanıtta bir çoklu çizgi döndürün. rotaya
routes.legs.polyline
ekleyin.Adım düzeyinde, her bir adım için yanıtta bir çoklu çizgi döndürün bacağı
routes.legs.steps.polyline
içeriyor.
Örneğin, tüm rota, her ayak ve için için bir çoklu çizgiyi döndürmek her bacağın her adımında:
curl -X POST -d '{ "origin":{ "address": "1600 Amphitheatre Parkway, Mountain View, CA" }, "destination":{ "address": "24 Willie Mays Plaza, San Francisco, CA 94107" }, "travelMode": "DRIVE" }' \ -H 'Content-Type: application/json' \ -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.polyline,routes.legs.polyline,routes.legs.steps.polyline' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
Bu istek, şunun için çoklu çizgiyi içeren aşağıdaki yanıtı döndürür: rotanın her ayağı ve ayağın her adımı için:
{ "routes": [ { "legs": [ { "polyline": { "encodedPolyline": "ipkcFfich...@Bs@?A?O?SD{A@o@B}@I?qA?_AA_@@_@?" } }, "steps": [ { "polyline": { "encodedPolyline": "kclcF...@sC@YIOKI" } }, { "polyline": { "encodedPolyline": "wblcF~...SZSF_@?" } }, ... ], "distanceMeters": 56901, "duration": "2420s", "polyline": { "encodedPolyline": "ipkcFfich...@Bs@?A?O?SD{A@o@B}@I?qA?_AA_@@_@?" } } ] }
Bu istek yalnızca bir başlangıç noktası ve bir hedef içerdiğinden, döndürülen rota yalnızca tek bir bacaktan oluşuyor. Bu nedenle, bacak ve bacak için çoklu çizgi aynıdır.
İsteğe ara bir ara nokta eklerseniz, isteğe bağlı olarak rota iki ayak içeriyor:
curl -X POST -d '{ "origin":{ "address": "1600 Amphitheatre Parkway, Mountain View, CA" }, "destination":{ "address": "24 Willie Mays Plaza, San Francisco, CA 94107" }, "intermediates": [ { "address": "450 Serra Mall, Stanford, CA 94305, USA"}, ], "travelMode": "DRIVE", }' \ -H 'Content-Type: application/json' \ -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.polyline,routes.legs.polyline' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
Bu istek, her biri benzersiz bir çoklu çizgiye ve tüm rota:
{ "routes": [ { "legs": [ { "polyline": { "encodedPolyline": "kclcFfqchV?A...?I@G?GAECCCEKICBAFG" } "steps": [ { "polyline": { "encodedPolyline": "kclcFfqch...YIOKI" } }, ... }, { "polyline": { "encodedPolyline": "ojmcFtethV?K...QOYQOGA?_@MUG[Ga@G" } "steps": [ { "polyline": { "encodedPolyline": "uypeFbo`jVgJq...PoBiC" } }, ... } ], "distanceMeters": 68403, "duration": "3759s", "polyline": { "encodedPolyline": "kclcFfqchV?A?CBKF[Ha...?GAECCCEKICBAFGJEBE" } } ] }
Çoklu çizgi kalitesi
Çoklu çizginin kalitesi aşağıdaki terimlerle açıklanabilir:
Noktaların kayan nokta hassasiyeti
Noktalar enlem ve boylam değerleri olarak belirtilir ve bu değerler, tek duyarlıklı kayan nokta biçimindedir. Bu, küçük değerlerde iyi sonuç verir (bu, hassas bir şekilde temsil edilebilir) ancak hassasiyet değer olarak azalır. yuvarlama hatalarından kaynaklanan artış.
İçinde computeRoutes yöntem (REST) ve ComputeRoutes bu öğe
polylineEncoding
tarafından kontrol ediliyor.Çoklu çizgiyi oluşturan noktaların sayısı
Nokta sayısı arttıkça çoklu çizgi de pürüzsüz hale gelir (özellikle eğrileri).
İçinde computeRoutes yöntem (REST) ve ComputeRoutes bu öğe
polylineQuality
tarafından kontrol ediliyor.
Çoklu çizgi kodlama türünü yapılandırın
Çoklu çizgi türünü kontrol etmek için polylineEncoding
istek seçeneğini kullanın.
polylineEncoding
özelliği, çoklu çizginin
ENCODED_POLYLINE
(varsayılan), şu anlama gelir:
Kodlanmış Çoklu Çizgi Algoritma Biçimi
veya GEO_JSON_LINESTRING
kullanılır, yani
GeoJSON LineString biçimi
oluşturmak için kullanılır.
Örneğin, istek gövdesinde:
curl -X POST -d '{ "origin":{ "address": "1600 Amphitheatre Parkway, Mountain View, CA" }, "destination":{ "address": "24 Willie Mays Plaza, San Francisco, CA 94107" }, "travelMode": "DRIVE", "polylineEncoding": "ENCODED_POLYLINE" }' \ -H 'Content-Type: application/json' \ -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.polyline,routes.legs.polyline' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
Çoklu çizgi kalitesini yapılandırma
polylineQuality
, çoklu çizginin kalitesini HIGH_QUALITY
veya
OVERVIEW
(varsayılan). OVERVIEW
ile çoklu çizgi, küçük bir bileşen
HIGH_QUALITY
ile kıyaslandığında daha düşük bir istek gecikmesine sahip.
Örneğin, istek gövdesinde:
{ "origin":{ "location":{ "latLng":{ "latitude": 37.419734, "longitude": -122.0827784 } } }, "destination":{ "location":{ "latLng":{ "latitude": 37.417670, "longitude": -122.079595 } } }, "travelMode": "DRIVE", "routingPreference": "TRAFFIC_AWARE", "polylineQuality": "HIGH_QUALITY", "polylineEncoding": "ENCODED_POLYLINE", "departureTime": "2023-10-15T15:01:23.045123456Z", ... }
Trafiğe duyarlı çoklu çizgi isteme
Yukarıda gösterilen tüm örnekler, temel çoklu çizgileri, yani içermeyen çoklu çizgileri döndürür. trafik bilgileri. Ayrıca çoklu çizginin güzergâh ve rotanın her ayağı için trafik bilgilerini gösterir.
Trafiğe duyarlı çoklu çizgiler, trafiğin durumu hakkında bilgi içerir ve
yol gösterir. Trafik koşulları, hız kategorileri cinsinden ifade edilir
Belirli bir yanıt aralığı için (NORMAL
, SLOW
, TRAFFIC_JAM
)
çoklu çizgi. Aralıklar, başlangıç dizinleriyle (bu değerler dahil) tanımlanır
ve bitiş (özel) çoklu çizgi noktalarından yararlanın.
Örneğin, aşağıdaki yanıtta çoklu çizgi arasındaki NORMAL
trafiği gösteriliyor
2 ve 4. puan:
{ "startPolylinePointIndex": 2, "endPolylinePointIndex": 4, "speed": "NORMAL" }
Trafiğe duyarlı çoklu çizgiyi hesaplamak için istekte bulunmak üzere aşağıdakini ayarlayın: özellikler:
Etkinleştirmek için
extraComputations
dizi alanınıTRAFFIC_ON_POLYLINE
olarak ayarlayın hesaplamalısınız.travelMode
öğesiniDRIVE
veyaTWO_WHEELER
olarak ayarlayın. Diğer tüm hata döndürür.TRAFFIC_AWARE
veyaTRAFFIC_AWARE_OPTIMAL
yönlendirmesini belirtin tercih edebilir. Daha fazla bilgi için bkz. Kaliteyi yapılandırma ve gecikme.Yanıt özelliklerini döndüreceğini belirten bir yanıt alanı maskesi ayarlayın:
Rota düzeyinde, yanıttaki tüm seyahat bilgilerini şu şekilde döndürün: yanıt alanı maskesine
routes.travelAdvisory
dahil. Geri dönmek için trafik bilgilerini, özellikleroutes.travelAdvisory.speedReadingIntervals
Bacak düzeyinde, şuna yönelik yanıttaki tüm seyahat bilgilerini sağlayın: rotanın her ayağına
routes.legs.travelAdvisory
ekleyerek. Geri dönmek için trafik bilgilerini, özellikleroutes.legs.travelAdvisory.speedReadingIntervals
curl -X POST -d '{ "origin":{ "address": "1600 Amphitheatre Parkway, Mountain View, CA" }, "destination":{ "address": "24 Willie Mays Plaza, San Francisco, CA 94107" }, "travelMode": "DRIVE", "extraComputations": ["TRAFFIC_ON_POLYLINE"], "routingPreference": "TRAFFIC_AWARE_OPTIMAL" }' \ -H 'Content-Type: application/json' \ -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.polyline,routes.legs.polyline,routes.travelAdvisory,routes.legs.travelAdvisory' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
Trafiğe duyarlı çoklu çizgi için örnek yanıt
Yanıtta, trafik verileri çoklu çizgide kodlanır ve
travelAdvisory
alanı, türü
RouteLegTravelAdvisory
nesne (her bacak) ve
RouteTravelAdvisory nesnesi (rota) içerir.
Örneğin:
{ "routes": [ { "legs": { "polyline": { "encodedPolyline": "}boeF~zbjVAg@EmB`GWHlD" }, // Traffic data for the leg. "travelAdvisory": { "speedReadingIntervals": [ { "endPolylinePointIndex": 1, "speed": "NORMAL" }, { "startPolylinePointIndex": 1, "endPolylinePointIndex": 2, "speed": "SLOW" }, { "startPolylinePointIndex": 2, "endPolylinePointIndex": 4, "speed": "NORMAL" } ] } }, "polyline": { "encodedPolyline": "}boeF~zbjVAg@EmB`GWHlD" }, // Traffic data for the route. "travelAdvisory": { "speedReadingIntervals": [ { "endPolylinePointIndex": 1, "speed": "NORMAL" }, { "startPolylinePointIndex": 1, "endPolylinePointIndex": 2, "speed": "SLOW" }, { "startPolylinePointIndex": 2, "endPolylinePointIndex": 4, "speed": "NORMAL" } ] } } ] }
Hem RouteTravelAdvisory
hem de RouteLegTravelAdvisory
dizi alanı içeriyor
speedReadingIntervals
adlı, trafik hızı bilgilerini içeren bir paket. Her biri
dizideki nesne
SpeedReadingInterval (REST) veya
SpeedReadingInterval
(gRPC) nesnesini ifade eder.
Bir SpeedReadingInterval
nesnesi, bir rota aralığı için hız ölçümü içeriyor,
NORMAL
, SLOW
veya TRAFFIC_JAM
gibi. Nesne dizisinin tamamı,
rotanın çoklu çizgisinin tamamı çakışmadan oluşur. Belirli bir öğenin başlangıç noktası
aralığı, önceki aralığın bitiş noktasıyla aynı.
Her aralık startPolylinePointIndex
ile tanımlanır,
endPolylinePointIndex
ve ilgili hız kategorisi.
Aralık içinde başlangıç dizini eksikliğinin 0. indekse karşılık geldiğine dikkat edin
uyarınca
proto3 uygulamalarını kullanın.
startPolylinePointIndex
ve endPolylinePointIndex
değerleri aynı değil
art arda gerçekleştirilir. Örneğin:
{ "startPolylinePointIndex": 2, "endPolylinePointIndex": 4, "speed": "NORMAL" }
Bu örnekte, trafik koşulları dizin 2 ile dizin 4 arasında aynıdır.
Haritalar SDK'sı ile trafiğe duyarlı çoklu çizgiler oluşturun
Haritada trafiğe duyarlı çoklu çizgileri görüntülemenizi öneririz. Bunun için özel renklendirme, fırça darbesi ve diğer özellikler de dahil olmak üzere Google Haritalar SDK'ları tarafından desenler de oluşturabilirsiniz. Çoklu çizgileri kullanma hakkında daha fazla bilgi için bkz. Android için Polyline Özellikleri ve iOS için Polyline Özellikleri.
Örnek Çoklu çizgi oluşturma
Haritalar SDK'sı kullanıcıları, özelleştirilmiş bir eşleme tanımlama fırsatına sahiptir. arasındaki mantığın işleyiş şekline bakalım. Kullanıcı Örneğin, gösterilen tarih: "NORMAL" kalın mavi bir çizgi şeklinde "SLOW"dayken harita kalın turuncu bir çizgi olarak gösterilebilir.
Aşağıdaki snippet'ler, Melbourne'dan Perth'e. Daha fazla bilgi için bkz. Görünümleri özelleştirme (Android için) ve Çoklu çizgiyi özelleştirme (iOS için).
Android
Java
Polyline line = map.addPolyline(new PolylineOptions() .add(new LatLng(-37.81319, 144.96298), new LatLng(-31.95285, 115.85734)) .width(25) .color(Color.BLUE) .geodesic(true));
Kotlin
val line: Polyline = map.addPolyline( PolylineOptions() .add(LatLng(-37.81319, 144.96298), LatLng(-31.95285, 115.85734)) .width(25f) .color(Color.BLUE) .geodesic(true) )
iOS
Objective-C
GMSMutablePath *path = [GMSMutablePath path]; [path addLatitude:-37.81319 longitude:144.96298]; [path addLatitude:-31.95285 longitude:115.85734]; GMSPolyline *polyline = [GMSPolyline polylineWithPath:path]; polyline.strokeWidth = 10.f; polyline.strokeColor = .blue; polyline.geodesic = YES; polyline.map = mapView;
Swift
let path = GMSMutablePath() path.addLatitude(-37.81319, longitude: 144.96298) path.addLatitude(-31.95285, longitude: 115.85734) let polyline = GMSPolyline(path: path) polyline.strokeWidth = 10.0 polyline.geodesic = true polyline.map = mapView