Bu doküman, GMP API'lerinin önceki sürümlerini kullanan eski bir makalenin güncellenmiş halidir. Bu içerik, 2023-24'te kullanıma sunulan Places API'nin ve 2023'te kullanıma sunulan Routes API'nin yeni sürümüne göre güncellenmiştir.
Kullanıcı bir önemli yere (ÖY) arabayla giderken genellikle park yeri veya erişim noktası gibi yakındaki bir konuma yönlendirilmesi gerekir. Bir havaalanına veya alışveriş merkezine gitmesi gereken bir sürücüyü düşünün. Sürücü, havaalanına giderken havalimanı kompleksinin merkezine değil, bir terminale veya yolcu bırakma noktasına ulaşmaya çalışıyordur. Benzer şekilde, alışveriş merkezinin yanındaki bir otopark, araba kullanan bir kullanıcı için çok daha iyi bir seçenek olabilir. Bu durumda, sürücüye rehberlik edecek bir uygulama veya hizmet geliştirirken sürücünün gideceği konumu bulun ve ardından sürücüye bu konumun yakınındaki isteğe bağlı hedefler sunun. Bu yaklaşım, Google Haritalar Platformu tarafından sağlanan konum verilerinden yararlanan küçük ancak akıllı bir geliştirme çalışmasıyla müşterilerinize daha iyi hizmet sunmanıza ve zamanlarına değer verdiğinizi göstermenize olanak tanır.
Hedefinizin yanında park etmek için doğru konumu belirlemek üzere yeni Places API ve Routes API'yi sırayla veya birlikte nasıl kullanabileceğinizi göstereceğiz. Bu çözüm, bitiş noktasına yaklaştığınızda park yeri bulmak için belirsizliği ve birden fazla etkileşimi ortadan kaldırmayı amaçlar. Bu senaryoların nasıl uygulanabileceğine dair ayrıntılı iki örneğe göz atın.
1. örnek: Otoparkı olmayan turistik yer
Rotanın ayrı olarak alınması için doğrudan yol kenarına bağlı olmayan bir konum seçin. Hedef, Paris'teki Notre Dame'dir ve başlangıç noktası olarak Gare de l'Est tren istasyonunu (48.87697775149635, 2.3592247806755564) kullanacağız.
Sürücü, Notre Dame'ın yaklaşık 16 dakika kuzeyindeki istasyondan ayrılır. Notre Dame, köprü erişimi olan bir adadaki ünlü bir turistik yerdir. Bazı caddeler tek yönlüdür ve yakınlarda büyük bir otopark yoktur. Bu nedenle, bu ilginç bir meydan okuma olabilir.
- Places API isteği
Bu örnek Places API isteğinde, Notre Dame'i bulmak için metin arama kullanılmaktadır. Ayrıntılar için geliştirici belgelerine bakın. Bu örneklerdeki "$APIKEY", Google Cloud Console'da etkinleştirilen Google Haritalar Platformu Yerler ve Rotalar API'leri için sahip olduğunuz API anahtarıdır. Daha ayrıntılı bir açıklama için Google Haritalar Platformu'nu kullanmaya başlama ile ilgili dokümanları inceleyin.
Yeni Places API isteklerinin biçimi değişti. Yanıt alanları artık sabit değildir ve geliştirici olarak başlıkta bir alan maskesi tanımlamanız gerekir. Alan maskesinin kullanımı dokümanda tanımlanmıştır.
curl -X POST --data @notre_dame.json \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: $APIKEY" \
-H 'X-Goog-FieldMask: places.id,places.displayName,places.formattedAddress,places.location' \
'https://places.googleapis.com/v1/places:searchText'
Arama parametreleri için "notre_date.json" içeriğiyle:
{
"textQuery": "Notre Dame, Paris",
"languageCode": "en"
}
Yukarıdaki istek için verilen yanıtta aşağıdaki enlem ve boylam koordinatları verilmiştir:
{
"places": [
{
"id": "ChIJATr1n-Fx5kcRjQb6q6cdQDY",
"formattedAddress": "6 Parvis Notre-Dame - Pl. Jean-Paul II, 75004 Paris, France",
"location": {
"latitude": 48.852968200000007,
"longitude": 2.3499021
},
"displayName": {
"text": "Cathédrale Notre-Dame de Paris",
"languageCode": "en"
}
}
]
}
Gördüğünüz gibi, koordinatlar gerçekten Notre Dame'ı gösteriyor.
Geliştirici veya servis sağlayıcı olarak sürücüye otomatik olarak "Notre Dame yakınlarında otopark mı arıyorsunuz?" sorusunu sorabilirsiniz. Sürücünün elektrikli aracı varsa şarj istasyonu araması yapabilirsiniz. Kullanıcı deneyimi, cihaza ve ekrana bağlı olarak farklı olacaktır. Ancak bu durumda, kısa bir süre sonra kaybolan belirsiz bir iletişim kutusu metni kullanmayı düşünebilirsiniz. Notre Dame'in yakınında park yeri bulmak için 500 metre yarıçapında "parking" ve "electric_vehicle_charging_station" türleriyle bir Places API yakın araması yapın. Aşağıdaki örnekte, sonuçlar Notre Dame'a 500 metre mesafedeki otopark alanlarına göre gösterilir.
curl -X POST -d '{
"includedTypes": ["parking", "electric_vehicle_charging_station"],
"maxResultCount": 10,
"rankPreference": "DISTANCE",
"locationRestriction": {
"circle": {
"center": {
"latitude": 48.852968200000007,
"longitude": 2.3499021},
"radius": 500.0
}
}
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: $APIKEY" \
-H "X-Goog-FieldMask: places.displayName,places.location" \
https://places.googleapis.com/v1/places:searchNearby
İlk sonuç, 48.854981, 2.350629 koordinatlarında bir şarj istasyonudur. Ancak bu örneği çalıştırdığınızda sonuçlarınız farklı olabilir. Bu konumu, Routes API isteği gönderdiğimiz sonraki bölümde kullanın.
- **Routes API isteği **
İstasyondan Notre Dame'e yakın bir şarj istasyonuna giden rotayı bulmak için Routes API isteği göndermeniz gerekir. Başlangıç ve hedef parametrelerini ayarlamanız yeterlidir. Diğer seçenekler için geliştirici belgelerine bakın.
curl -X POST -d '{
"origin":{
"location":{
"latLng":{
"latitude": 48.87697775149635,
"longitude": 2.3592247806755564
}
}
},
"destination":{
"location":{
"latLng":{
"latitude": 48.854981,
"longitude": 2.350629
}
}
},
"travelMode": "DRIVE",
"routingPreference": "TRAFFIC_AWARE",
"departureTime": "2024-05-16T15:01:23.045123456Z",
"computeAlternativeRoutes": false,
"routeModifiers": {
"avoidTolls": false,
"avoidHighways": false,
"avoidFerries": false
},
"languageCode": "en-US",
"units": "METRIC"
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: $APIKEY" \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs,routes.polyline.encodedPolyline' \
'https://routes.googleapis.com/directions/v2:computeRoutes'
Routes API yanıtı genellikle birden fazla rota önerisi içerir. Rota verilerini yanıta dahil etmek için alan maskesinde "routes.legs" değerini tanımlayın. Her rota birden fazla "ayak"tan oluşur ve bu ayaklar, seyahat mesafesini ve koordinatlarını gösteren birden fazla "adım" içerir. Arabayla ulaşılabilecek nihai koordinatları bulmak için seçtiğiniz bir rotadaki son etabın son adımını içeren "endLocation" alanını kullanın. "latitude": 48.854937299999996, "longitude": 2.3505841999999997
Bu konum ilk tercih gibi görünmeyebilir ancak haritaya veya Google Street View'a baktığınızda bu konumun Notre Dame'e çok kısa bir yürüme mesafesinde (yaklaşık 6-7 dakika) olduğunu göreceksiniz.
Şarj istasyonu park yerinden Notre Dame'e yürüyüş rotası
1. örnek için özet
Gördüğünüz gibi, bir araba için park yeri bulmak yalnızca birkaç API çağrısı ve sürücüye önerinin gösterilmesini gerektirir. Bu sayede, kullanıcılarınız tek yönlü sokaklarda dolaşmak veya kalabalık bir turistik cazibe merkezinde araç park edecek yer aramak zorunda kalmaz. Özet olarak aşağıdaki API isteklerini yaptık:
- Notre Dame'in koordinatlarını bulmak için Places API metin arama isteği
- Bu koordinatların 500 metre yakınında elektrikli araç şarj istasyonu bulunan bir park alanı bulmak için Places API yakın araması
- Şarj istasyonuna giden bir rota bulmak için Routes API isteği
2. örnek: Büyük bir havaalanında bir terminale yönlendirme
Sürücünün birden fazla konum, ÖY veya potansiyel teslim noktası bulunan büyük bir alana ulaşmaya çalıştığı başka bir örneği ele alalım. Sürücü, Wembley Stadyumu, Birleşik Krallık (51.557263604707224, -0.2794575145680608) adresinden Londra Heathrow Havalimanı 5. terminali'ne gitmeye çalışıyor.
Yeni Places API otomatik tamamlama özelliğinin en iyi yanı, API'nin potansiyel arama sonuçları olarak alt tesisleri tahmin etmesiyle birlikte arama ölçütü olarak birincil bir tür tanımlayabilmesidir. Bu durumda, bir havalimanı arandığında terminaller de döndürülür. Dahil edilecek veya hariç tutulacak türlerin tam listesini dokümanda bulabilirsiniz.
curl -X POST -d '{
"input": "Heathrow",
"includedPrimaryTypes": ["airport"]
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: $APIKEY" \
https://places.googleapis.com/v1/places:autocomplete
Yukarıdaki sorgu, terminallerin ve bu terminallerdeki teslim noktalarının listesini verir. Sonuçlar listesinde "Londra Heathrow Havalimanı Terminal 5"i ve yer kimliğini görebilirsiniz:
"place_id" : "ChIJo21hnPxxdkgRksRL0KQRWII",
"placeId" parametresini kullanarak Routes API'ye, rastgele koordinatlar yerine bir yere ulaşmaya çalıştığımızı söyleyebiliriz.
curl -X POST -d '{
"origin":{
"location":{
"latLng":{
"latitude": 51.557263604707224,
"longitude": -0.2794575145680608
}
}
},
"destination":{
"placeId": "ChIJo21hnPxxdkgRksRL0KQRWII"
},
"travelMode": "DRIVE",
"routingPreference": "TRAFFIC_AWARE",
"departureTime": "2024-05-16T15:01:23.045123456Z",
"computeAlternativeRoutes": false,
"languageCode": "en-US",
"units": "METRIC"
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: $APIKEY" \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs,routes.polyline.encodedPolyline' \
'https://routes.googleapis.com/directions/v2:computeRoutes'
Yine önceki örnekte olduğu gibi, JSON yanıtındaki tüm adımları okuyarak yolculuğun son bölümünü ve bitiş konumlarının enlem ve boylam koordinatlarını (51.4714348, "longitude": -0.48967890000000003) bulabilirsiniz.
2. örnek için özet
Önceki örnekte olduğu gibi, sürücüye daha iyi rehberlik sağlamak için gereken geliştirme çalışması çok küçüktür ve sürücüye kazandırılan zamandan elde edilen avantajlar ölçülebilir. Aşağıdaki istekleri yerine getirdik:
- Heathrow Havalimanı 5. terminalini bulmak için Places API otomatik tamamlama (yeni) isteği
- Wembley'den 5. terminale rota almak için bir Rotalar API isteği
Bu örnek, yeni Places API özelliklerinin yalnızca bir kısmını göstermektedir. Havaalanı ve uluslararası havaalanı gibi yeni yer türlerine göz atın.
Sonuç
Gördüğünüz gibi, arabayla seyahat eden müşterilerinize birinci sınıf bir hizmet sunmak için gereken geliştirme çalışması oldukça küçüktür ve müşterilerinizin ihtiyaçlarını nasıl düşündüğünüzü gösterebilirsiniz.
Geliştirme amacıyla, müşterileriniz için hizmetler oluşturmanıza yardımcı olacak mevcut kitaplıkların ve araçların çoğunu kullanabilirsiniz. Herkese açık Google Haritalar Platformu GitHub depomuza göz atın.
Sonraki İşlemler
GMP'yi kullanmaya başlama : https://developers.google.com/maps/get-started
Önerilen daha fazla okuma
Places API otomatik tamamlama (yeni) dokümanları: https://developers.google.com/maps/documentation/places/web-service/place-autocomplete
Routes API dokümanları: https://developers.google.com/maps/documentation/routes
Katkıda bulunanlar
Baş yazar: Mikko Toivanen | Google Haritalar Platformu Çözümleri Mühendisi