Arabayla konuma giderken en iyi kullanıcı deneyimini oluşturmaya yönelik ipuçları

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 yeni Places API sürümü ve 2023'te kullanıma sunulan Routes API sürümüyle güncellenmiştir.

Genellikle kullanıcılar bir ilgi çekici noktaya (POI) giderken aslında bir otopark veya erişim noktası gibi yakındaki bir konuma gitmek için navigasyona ihtiyaç duyarlar. Havaalanına veya alışveriş merkezine gitmesi gereken bir sürücüyü düşünün. Sürücü, havaalanına giderken havaalanı kompleksinin merkezine değil, terminale veya bırakma noktasına ulaşmaya çalışıyor. Benzer şekilde, alışveriş merkezinin yanındaki bir otopark, arabası olan bir kullanıcı için çok daha iyi bir seçenek olabilir. Bu durumda, sürücüye yol gösterecek bir uygulama veya hizmet geliştirirken önce sürücünün gideceği yeri bulun, ardından sürücüye bu konumun yakınındaki isteğe bağlı hedefleri 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.

Sistem şeması

Hedefinize yakın 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, sürüş sırasında varış noktasına yaklaşıldığında park yeri bulmak için gereken belirsizliği ve birden fazla etkileşimi ortadan kaldırmayı amaçlar. Bu kullanım alanlarının nasıl uygulanabileceğine dair iki örneği ayrıntılı olarak inceleyin.

1. örnek: Otoparkı olmayan bir turistik yer

Bir 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 ve başlangıç noktası olarak Gare de l'Est tren istasyonunu (48.87697775149635, 2.3592247806755564) kullanacağız.

Gare l'Est

Sürücü, Notre Dame'ın yaklaşık 16 dakika kuzeyinde istasyondan ayrılıyor. Notre Dame, köprüyle erişilebilen bir adada yer alan ünlü bir turistik cazibe merkezidir. Yakınında tek yönlü bazı sokaklar ve büyük bir otopark bulunmadığından bu, ilginç bir zorluk olacaktır.

1. Places API isteği

Bu örnek Places API isteğinde, Notre Dame'ı 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ı açıklama için Google Haritalar Platformu'nu kullanmaya başlama ile ilgili dokümanlara bakın.

Yeni Places API istekleri yeni bir biçime sahip. Yanıt alanları artık sabit değildir ve bir geliştirici olarak başlıkta bir fieldmask tanımlamanız gerekir. Fieldmask kullanımı belgelerde 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 isteğe verilen yanıtta aşağıdaki enlem ve boylam koordinatları yer alıyor:

{
  "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.

Notre Dame giriş fotoğrafı Notre Dame bölgesinin haritası

Geliştirici veya hizmet sağlayıcı olarak, sürücüye otomatik olarak "Notre Dame yakınlarında otopark mı arıyorsunuz?" diye sormanız veya sürücünün elektrikli aracı varsa şarj istasyonu aramanız iyi bir fikir olabilir. Kullanıcı deneyimi cihaza ve ekrana göre değişir ancak kısa bir süre sonra kaybolan ince bir iletişim kutusu metni bu durumda dikkate alınabilir. Notre Dame'ın yakınındaki otoparkları bulmak için 500 metre yarıçaplı, "otopark" ve "elektrikli_araç_şarj_istasyonu" türlerini içeren bir Places API yakındaki arama işlemi yapın. Aşağıdaki örnek, sonuçları Notre Dame'dan 500 metre uzaklıktaki otopark alanlarına yönlendirir.

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 konumundaki bir şarj istasyonudur. Ancak bu örneği çalıştırdığınızda sonuçlarınız farklı olabilir. Bir sonraki bölümde Routes API isteği yaparken bu konumu kullanın.

2. Routes API isteği

İstasyondan Notre Dame'ın yakınındaki bir şarj istasyonuna giden rotayı bulmak için Routes API isteği yapmanız gerekir. Yalnızca kaynak ve hedef parametrelerini ayarlayın. 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. Yanıtın rota verilerini içermesi için fieldmask'te "routes.legs"i tanımlayın. Her rota, birden fazla "etaptan" oluşur ve bu etaplar, seyahat mesafesini ve koordinatlarını gösteren birden fazla "adımı" içerir. Arabayla ulaşılabilen son koordinatları bulmak için seçtiğiniz bir rotadaki son ayağın son adımının "endLocation" alanını kullanın. "latitude": 48.854937299999996, "longitude": 2.3505841999999997

Bu konum ilk tercihiniz gibi görünmeyebilir ancak haritaya veya Google Sokak Görünümü'ne baktığınızda bu konumun Notre Dame'a çok kısa bir yürüme mesafesinde (yaklaşık 6-7 dakika) olduğunu göreceksiniz.

Notre Dame'a yol tarifi

Şarj istasyonu park yerinden Notre Dame'a giden yürüyüş rotası

1. örnek için özet

Gördüğünüz gibi, araba için park alanı bulmak yalnızca birkaç API çağrısı ve sürücüye öneriyi göstermeyi gerektirir. Bu sayede kullanıcılarınız tek yönlü caddelerde dolaşmak veya kalabalık bir turistik yerde arabayı bırakacak yer aramak zorunda kalmaz ve zaman kazanır. Özet olarak, aşağıdaki API isteklerini yaptık:

  • Notre Dame koordinatlarını bulmak için bir Places API metin arama isteği
  • Bu koordinatların 500 metre yakınında elektrikli araç şarj istasyonu olan bir park alanı bulmak için Places API'de yakında arama
  • Şarj istasyonuna giden rotayı bulmak için Routes API isteği

2. örnek: Büyük bir havalimanında terminale yönlendirme

Heathrow Havaalanı'nın haritası

Sürücünün birden fazla konum, ÖY veya olası bırakma noktası içeren geniş bir alana ulaşmaya çalıştığı başka bir örneği ele alalım. Sürücü, Birleşik Krallık'taki Wembley Stadyumu'ndan (51.557263604707224, -0.2794575145680608) ayrılıyor ve Londra Heathrow Havaalanı Terminal 5'e gitmeye çalışıyor.

Yeni Places API otomatik tamamlama özelliğinin en iyi yanı, API'nin alt tesisleri olası arama sonuçları olarak tahmin etmesiyle birlikte arama ölçütü olarak birincil türler tanımlayabilme olanağı sunmasıdır. Bu durumda, havalimanı ve otopark araması yaptığınızda terminaller veya araba park yerleri de gösterilir. Dahil edilecek veya hariç tutulacak türlerin tam listesini belgelerde bulabilirsiniz.

curl -X POST -d '{
  "input": "Heathrow",
  "includedPrimaryTypes": ["airport", "parking"]
}' \
-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 bireysel teslimat noktalarının listesini verir. Sonuç listesinde "London Heathrow Airport Terminal 5" ve yer kimliğini bulabiliriz:

"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 son konumların enlem ve boylam koordinatlarını (51.4714348, "longitude": -0.48967890000000003) bulabilirsiniz.

Terminal 5 Street View

2. örnek için özet

Önceki örnekte olduğu gibi, sürücüye daha iyi yol tarifi sunmak için gereken geliştirme çabası çok azdır ve sürücünün zamandan tasarruf etmesiyle elde edilen faydalar ölçülebilir. Aşağıdaki istekleri gerçekleştirdik:

  • Heathrow Havalimanı Terminal 5'i bulmak için Places API otomatik tamamlama (yeni) isteği
  • Wembley'den 5. terminale giden bir rota almak için yapılan bir Rotalar API isteği

Bu örnek, yeni Places API özelliklerinin yalnızca bir kısmını ele almaktadır. Havaalanı ve uluslararası havalimanı gibi yeni yer türlerine göz atın.

Sonuç

Gördüğünüz gibi, arabayla seyahat eden müşterilerinize birinci sınıf hizmet sunmak için gereken geliştirme çabası 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 birçok kitaplık ve araçtan yararlanabilirsiniz. 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 ek okumalar

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şlıca yazar: Mikko Toivanen | Google Haritalar Platformu Çözüm Mühendisi