نکاتی برای ایجاد بهترین تجربه کاربری هنگام پیمایش به مکان‌ها با ماشین

این سند به‌روزرسانی یک مقاله قدیمی است که از نسخه‌های قبلی APIهای GMP استفاده می‌کرد. این محتوا به نسخه جدید Places API راه‌اندازی شده در سال‌های 2023-24 و Routes API که در سال 2023 راه‌اندازی شده است، به‌روزرسانی می‌شود.

معمولاً هنگامی که کاربر به سمت یک نقطه مورد علاقه (POI) رانندگی می کند، در واقع به ناوبری به یک مکان نزدیک مانند یک پارکینگ یا یک نقطه دسترسی نیاز دارد. راننده ای را تصور کنید که باید به فرودگاه یا مرکز خرید برود. هنگام رفتن به فرودگاه، راننده به جای رسیدن به مرکز محوطه فرودگاه، سعی می‌کند به یک ترمینال یا یک نقطه تخلیه برسد. به همین ترتیب یک پارکینگ در کنار مرکز خرید ممکن است گزینه بسیار بهتری برای کاربر با ماشین باشد. در این حالت، هنگام توسعه یک اپلیکیشن یا سرویسی برای راهنمایی راننده، ابتدا مکانی را که می‌خواهند پیدا کنید و سپس مقصدهای اختیاری نزدیک به آن مکان را به راننده پیشنهاد دهید. این رویکرد به شما امکان می‌دهد خدمات بهتری را به مشتریان خود ارائه دهید و نشان دهید که برای زمان آن‌ها ارزش قائل هستید، با یک تلاش توسعه کوچک اما هوشمند که از داده‌های موقعیت مکانی ارائه شده توسط پلتفرم نقشه‌های Google استفاده می‌کند.

System diagram

ما نشان خواهیم داد که چگونه می توانید از Places API و Routes API جدید به صورت متوالی یا ترکیبی برای شناسایی مکان مناسب برای پارک در کنار مقصد خود استفاده کنید. هدف این راه حل حذف عدم قطعیت و تعاملات متعدد برای یافتن مکانی برای پارک در حین رانندگی یک بار به مقصد نهایی است. نگاهی به دو نمونه از نحوه اجرای دقیق این موارد بیندازید.

مثال 1 - یک جاذبه توریستی بدون پارکینگ

مکانی را انتخاب کنید که مستقیماً به کنار جاده متصل نباشد، بنابراین یک مسیر باید به طور جداگانه بازیابی شود، مقصد نوتردام در پاریس است و به عنوان نقطه شروع از ایستگاه راه آهن Gare de l'Est (48.87697775149635، 2.3592247806755564) استفاده خواهیم کرد.

Gare l'Est

راننده ایستگاه را در حدود 16 دقیقه شمال نوتردام ترک می کند. نوتردام یک جاذبه توریستی معروف در جزیره ای با دسترسی به پل، برخی از خیابان های یک طرفه و بدون پارکینگ بزرگ در نزدیکی آن است، بنابراین این باید یک چالش جالب باشد.

  1. درخواست API مکان ها

این مثال درخواست Places API از جستجوی متن برای یافتن نوتردام استفاده می کند. برای جزئیات به مستندات توسعه دهنده مراجعه کنید. "$APIKEY" در این مثال‌ها کلید API است که شما برای APIهای Google Maps Platform Places and Routes فعال در Google Cloud Console دارید. برای توضیح دقیق تر، مستندات مربوط به شروع کار با Google Maps Platform را ببینید.

درخواست‌های Places API جدید فرمت جدیدی دارند. فیلدهای پاسخ دیگر ثابت نیستند و به عنوان یک توسعه دهنده باید یک فیلد ماسک در هدر تعریف کنید. استفاده از فیلد ماسک در مستندات تعریف شده است.

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'

با محتوای "notre_date.json" برای پارامترهای جستجو:

{
   "textQuery": "Notre Dame, Paris",
   "languageCode": "en"
}

پاسخ به درخواست فوق مختصات طول و عرض جغرافیایی زیر را نشان می دهد:

{
  "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"
      }
    }
  ]
}

همانطور که می بینید، مختصات در واقع نوتردام را مشخص می کند.

Notre Dame entrance photoMap of Notre Dame area

به‌عنوان یک توسعه‌دهنده یا ارائه‌دهنده خدمات، ایده خوبی است که به‌طور خودکار از راننده بخواهید «به دنبال پارکینگ نزدیک نوتردام هستید؟» یا اگر راننده یک وسیله نقلیه الکتریکی دارد، ممکن است بخواهید به دنبال ایستگاه شارژ بگردید. تجربه کاربر بسته به دستگاه و صفحه نمایش متفاوت خواهد بود، اما یک متن محاوره ای ظریف که پس از مدت کوتاهی ناپدید می شود، می تواند در این مورد ارزش بررسی داشته باشد. برای یافتن پارکینگ در نزدیکی نوتردام، جستجوی Places API در نزدیکی با انواع «parking» و «electric_vehicle_charging_station» با شعاع 500 متر انجام دهید. مثال زیر نتایج را به مناطق پارکینگ در 500 متری نوتردام سوگیری خواهد کرد.

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

اولین نتیجه یک ایستگاه شارژ با 48.854981، 2.350629 است، اگرچه تا زمانی که این مثال را اجرا کنید، نتایج شما ممکن است متفاوت باشد. از این مکان در قسمت بعدی که در حال انجام درخواست Routes API هستیم استفاده کنید.

  1. ** درخواست Routes API **

برای یافتن مسیر از ایستگاه تا ایستگاه شارژ نزدیک به نوتردام، باید یک درخواست Routes API انجام دهید. فقط پارامترهای مبدا و مقصد را تنظیم کنید. برای گزینه های بیشتر به اسناد توسعه دهنده مراجعه کنید.

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 معمولاً حاوی چندین پیشنهاد مسیر است. برای گنجاندن داده مسیر در پاسخ، "routes.legs" را در فیلد ماسک تعریف کنید. هر مسیر از چندین "پا" تشکیل شده است و آنها حاوی چندین "گام" هستند که مسافت و مختصات سفر را نشان می دهند. برای یافتن مختصات نهایی قابل دسترسی با ماشین، از قسمت "endLocation" آخرین مرحله آخرین مرحله در مسیری که انتخاب کرده‌اید استفاده کنید. "طول جغرافیایی": 48.854937299999996، "طول جغرافیایی": 2.3505841999999997

این مکان ممکن است به نظر اولین انتخاب نباشد، اما وقتی به نقشه یا نمای خیابان گوگل نگاه می کنید، متوجه می شوید که این مکان در فاصله بسیار کمی پیاده روی، حدود 6-7 دقیقه، از نوتردام قرار دارد.

Directions to Notre Dame

مسیر پیاده‌روی از محل پارکینگ ایستگاه شارژ تا نوتردام

خلاصه برای مثال 1

همانطور که می بینید، پیدا کردن یک پارکینگ برای خودرو تنها به چند تماس API و نمایش پیشنهاد به راننده نیاز دارد. این باعث صرفه جویی در وقت کاربران شما می شود زیرا آنها در خیابان های یک طرفه رانندگی نمی کنند یا سعی نمی کنند مکانی برای ترک ماشین در یک جاذبه توریستی شلوغ پیدا کنند. به عنوان خلاصه، ما درخواست های API زیر را انجام دادیم:

  • یک درخواست جستجوی متنی API Places برای یافتن مختصات نوتردام
  • API Places در نزدیکی جستجو برای یافتن یک پارکینگ با ایستگاه شارژ ماشین الکتریکی در فاصله 500 متری آن مختصات
  • درخواست Routes API برای یافتن مسیری به ایستگاه شارژ

مثال 2 - راهنمایی به ترمینال در یک فرودگاه بزرگ

Map of Heathrow airport

مثال دیگری را در نظر بگیرید که در آن راننده سعی می کند به یک منطقه بزرگ که دارای چندین مکان، POI یا نقاط احتمالی خروج است برسد. راننده از استادیوم ومبلی، انگلستان (51.557263604707224، -0.2794575145680608) حرکت می‌کند و سعی می‌کند به ترمینال 5 فرودگاه هیترو لندن برود.

آنچه در مورد تکمیل خودکار جدید Places API عالی است، توانایی تعریف یک نوع اصلی به عنوان معیار جستجو در ترکیب با پیش‌بینی‌های API به عنوان نتایج جستجوی بالقوه است. در این مورد به این معنی است که جستجو برای فرودگاه، ترمینال ها را نیز برمی گرداند. می‌توانید فهرست کامل انواعی که باید در اسناد گنجانده یا حذف شوند را بیابید.

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

پرس و جوی بالا لیستی از پایانه ها و نقاط خروج فردی در آن پایانه ها را به ما می دهد. از لیست نتایج می توانیم "ترمینال 5 فرودگاه هیترو لندن" و شناسه مکان آن را پیدا کنیم:

"place_id" : "ChIJo21hnPxxdkgRksRL0KQRWII",

با استفاده از پارامتر "placeId" می‌توانیم به Routes API بگوییم که به جای برخی مختصات دلخواه، در تلاش برای رسیدن به یک مکان هستیم.

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'

مجدداً، مانند مثال قبلی، با خواندن تمام مراحل در پاسخ JSON، آخرین بخش سفر و مکان‌های پایانی lat & long مختصات (51.4714348، "طول جغرافیایی": -0.48967890000000003) را خواهید یافت.

Terminal 5 Street View

خلاصه برای مثال 2

مانند مثال قبلی، تلاش توسعه برای ارائه راهنمایی های بهبود یافته به راننده بسیار اندک است و مزایای صرفه جویی در زمان برای راننده قابل اندازه گیری است. ما درخواست های زیر را انجام دادیم:

  • درخواست تکمیل خودکار Places API (جدید) برای یافتن ترمینال 5 فرودگاه هیترو
  • یک درخواست Routes API برای دریافت مسیر از ومبلی به ترمینال 5

این مثال فقط سطح ویژگی های جدید Places API را خراش می دهد. به برخی از انواع مکان های جدید مانند فرودگاه و فرودگاه بین المللی نگاهی بیندازید.

نتیجه گیری

همانطور که می بینید، تلاش برای توسعه مورد نیاز برای ارائه خدمات ممتاز به مشتریان خود که با ماشین سفر می کنند، بسیار کم است و می توانید نشان دهید که چگونه به نیازهای مشتریان خود فکر می کنید.

برای اهداف توسعه می توانید از بسیاری از کتابخانه ها و ابزارهای موجود برای کمک به ایجاد خدمات برای مشتریان خود استفاده کنید. نگاهی به مخزن عمومی GitHub ما برای پلتفرم Google Maps بیندازید.

اقدامات بعدی

شروع به کار با GMP: https://developers.google.com/maps/get-started

پیشنهاد مطالعه بیشتر

اسناد تکمیل خودکار API Places (جدید): https://developers.google.com/maps/documentation/places/web-service/place-autocomplete

مستندات Routes API: https://developers.google.com/maps/documentation/routes

مشارکت کنندگان

نویسنده اصلی: Mikko Toivanen | مهندس راه حل های پلتفرم نقشه های گوگل