نمای کلی
با استفاده از شی DirectionsService می توانید جهت ها را (با استفاده از روش های مختلف حمل و نقل) محاسبه کنید. این شی با سرویس مسیرهای API Google Maps ارتباط برقرار می کند که درخواست های جهت را دریافت می کند و یک مسیر کارآمد را برمی گرداند. زمان سفر عامل اولیه ای است که بهینه می شود، اما عوامل دیگری مانند مسافت، تعداد دور و بسیاری موارد دیگر ممکن است در نظر گرفته شوند. میتوانید این نتایج دستورالعملها را خودتان مدیریت کنید یا از شی DirectionsRenderer برای ارائه این نتایج استفاده کنید.
هنگام تعیین مبدا یا مقصد در یک درخواست جهت، می توانید یک رشته پرس و جو (به عنوان مثال، "Chicago, IL" یا "Darwin, NSW, Australia")، یک مقدار LatLng یا یک شی Place را مشخص کنید.
سرویس Directions می تواند جهت های چند بخشی را با استفاده از یک سری از ایستگاه های بین راه بازگرداند. مسیرها به صورت چند خطی که مسیر را بر روی نقشه ترسیم میکند، یا بهعنوان مجموعهای از توضیحات متنی در یک عنصر <div> نمایش داده میشوند (مثلاً «به سمت راست روی سطح شیبدار پل ویلیامزبورگ بپیچید»).
شروع کردن
قبل از استفاده از سرویس Directions در Maps JavaScript API، ابتدا مطمئن شوید که Directions API (Legacy) در کنسول Google Cloud در همان پروژه ای که برای Maps JavaScript API تنظیم کرده اید، فعال است.
برای مشاهده لیست API های فعال:
- به کنسول Google Cloud بروید.
- روی دکمه Select a project کلیک کنید، سپس همان پروژه ای را که برای Maps JavaScript API تنظیم کرده اید انتخاب کنید و روی Open کلیک کنید.
- از لیست APIها در داشبورد ، به دنبال Directions API (Legacy) بگردید.
- اگر API را در لیست مشاهده کردید، همه چیز آماده است. اگر API در لیست نیست، آن را در https://console.cloud.google.com/apis/library/directions-backend.googleapis.com فعال کنید
قیمت گذاری و سیاست ها
قیمت گذاری
برای اطلاع از قیمتگذاری و خطمشیهای استفاده برای سرویس JavaScript Directions، به Usage and Billing for the Directions API (Legacy) مراجعه کنید.
سیاست ها
استفاده از سرویس دستورالعمل ها باید مطابق با خط مشی های توضیح داده شده برای Directions API (Legacy) باشد.
درخواست مسیرها
دسترسی به سرویس Directions ناهمزمان است، زیرا Google Maps API باید با یک سرور خارجی تماس بگیرد. به همین دلیل، باید پس از تکمیل درخواست، یک متد برگشتی را ارسال کنید تا اجرا شود. این روش برگشتی باید نتیجه(های) را پردازش کند. توجه داشته باشید که سرویس Directions ممکن است بیش از یک برنامه سفر ممکن را به عنوان آرایه ای از routes[] .
برای استفاده از دستورالعملها در Maps JavaScript API، یک شی از نوع DirectionsService ایجاد کنید و DirectionsService.route() را فراخوانی کنید تا یک درخواست به سرویس Directions آغاز کند، و به آن یک شی DirectionsRequest حاوی عبارات ورودی و یک روش بازگشت به تماس را ارسال کنید تا پس از دریافت پاسخ اجرا شود.
شیء DirectionsRequest حاوی فیلدهای زیر است:
{ 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 }
این فیلدها در زیر توضیح داده شده است:
-
origin( الزامی ) محل شروع را مشخص می کند که از آن جهت محاسبه می شود. این مقدار ممکن است به عنوان یکString(به عنوان مثال، "Chicago, IL")، به عنوان یک مقدارLatLngیا به عنوان یک شی Place مشخص شود. اگر از یک شیء Place استفاده می کنید، می توانید شناسه مکان ، رشته پرس و جو یا مکانLatLngرا مشخص کنید. میتوانید شناسههای مکان را از سرویسهای Geocoding، Place Search و Place Autocomplete در Maps JavaScript API بازیابی کنید. برای مثال استفاده از شناسههای مکان از تکمیل خودکار مکان، تکمیل خودکار مکان و مسیرها را ببینید. -
destination( مورد نیاز ) مکان پایانی را مشخص می کند که جهت ها را به آن محاسبه می کند. گزینه ها مانند فیلدoriginکه در بالا توضیح داده شد است. -
travelMode( مورد نیاز ) مشخص می کند که هنگام محاسبه مسیرها از چه نوع حمل و نقل استفاده شود. مقادیر معتبر در حالت های سفر در زیر مشخص شده است. -
transitOptions( اختیاری ) مقادیری را مشخص می کند که فقط برای درخواست هایی کهtravelModeTRANSITاست اعمال می شود . مقادیر معتبر در گزینه های حمل و نقل در زیر توضیح داده شده است. -
drivingOptions( اختیاری ) مقادیری را مشخص می کند که فقط برای درخواست هایی اعمال می شود که در آنtravelModeDRIVINGاست. مقادیر معتبر در گزینه های رانندگی در زیر توضیح داده شده است. unitSystem( اختیاری ) مشخص می کند که از چه سیستم واحدی هنگام نمایش نتایج استفاده شود. مقادیر معتبر در سیستم های واحد در زیر مشخص شده است.waypoints[]( اختیاری ) آرایه ای ازDirectionsWaypoints را مشخص می کند. نقاط راه یک مسیر را با مسیریابی آن در مکان(های) مشخص شده تغییر می دهند. یک نقطه بین به عنوان یک شی به معنای واقعی کلمه با فیلدهای زیر مشخص می شود:-
locationمکان نقطه بین را مشخص می کند، به عنوانLatLng، به عنوان یک شی Place یا به عنوانStringکه جغرافیایی کدگذاری می شود. -
stopoverیک بولی است که نشان می دهد که ایستگاه بین راه یک توقف در مسیر است که باعث تقسیم مسیر به دو مسیر می شود.
(برای اطلاعات بیشتر در مورد نقاط بین راه، به استفاده از Waypoints در مسیرها در زیر مراجعه کنید.)
-
-
optimizeWaypoints( اختیاری ) مشخص می کند که مسیری کهwaypointsارائه شده استفاده می کند، ممکن است با مرتب کردن مجدد نقاط بین راهی به ترتیب کارآمدتر بهینه شود. اگرtrue، سرویس Directionswaypointsترتیب مجدد شده را در یک قسمتwaypoint_orderبرمی گرداند. (برای اطلاعات بیشتر، استفاده از Waypoints در مسیرها را در زیر ببینید.) -
provideRouteAlternatives( اختیاری ) وقتی رویtrueتنظیم شود مشخص می کند که سرویس Directions ممکن است بیش از یک مسیر جایگزین را در پاسخ ارائه دهد. توجه داشته باشید که ارائه مسیرهای جایگزین ممکن است زمان پاسخگویی از سرور را افزایش دهد. این فقط برای درخواست های بدون ایستگاه های بین راهی در دسترس است. -
avoidFerries( اختیاری ) وقتی رویtrueتنظیم شود نشان می دهد که مسیر(های) محاسبه شده باید در صورت امکان از کشتی اجتناب کند. -
avoidHighways( اختیاری ) وقتی رویtrueتنظیم شود نشان می دهد که مسیر(های) محاسبه شده باید در صورت امکان از بزرگراه های اصلی اجتناب کند. -
avoidTolls( اختیاری ) وقتی رویtrueتنظیم شود نشان می دهد که مسیر(های) محاسبه شده باید در صورت امکان از جاده های عوارضی اجتناب کند. -
region( اختیاری ) کد منطقه را مشخص می کند که به عنوان مقدار دو کاراکتری ccTLD ("دامنه سطح بالا") مشخص شده است. (برای اطلاعات بیشتر به منطقه بایاس در زیر مراجعه کنید.)
در زیر نمونه ای از DirectionsRequest آمده است:
{ 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 }
حالت های سفر
هنگام محاسبه مسیرها، باید مشخص کنید که از کدام حالت حمل و نقل استفاده کنید. حالت های سفر زیر در حال حاضر پشتیبانی می شوند:
-
DRIVING( پیش فرض ) جهت های رانندگی استاندارد را با استفاده از شبکه جاده نشان می دهد. -
BICYCLINGاز طریق مسیرهای دوچرخه و خیابانهای ترجیحی، مسیرهای دوچرخهسواری را درخواست میکند. -
TRANSITاز طریق مسیرهای حمل و نقل عمومی، مسیرها را درخواست می کند. -
WALKINGمسیرهای پیاده روی را از طریق مسیرهای عابر پیاده و پیاده روها درخواست می کند.
برای تعیین میزان پشتیبانی یک کشور از مسیرها ، با جزئیات پوشش پلتفرم Google Maps مشورت کنید. اگر برای منطقهای که این نوع جهت در دسترس نیست، دستورالعملها را درخواست کنید، پاسخ DirectionsStatus =" ZERO_RESULTS " را برمیگرداند.
توجه : مسیرهای پیاده روی ممکن است شامل مسیرهای عابر پیاده واضح نباشد، بنابراین مسیرهای پیاده روی هشدارهایی را در DirectionsResult نشان می دهند. این هشدارها باید همیشه به کاربر نمایش داده شود. اگر از DirectionsRenderer پیشفرض استفاده نمیکنید، مسئولیت اطمینان از نمایش هشدارها بر عهده شماست.
گزینه های حمل و نقل
گزینه های موجود برای درخواست مسیرها بین حالت های سفر متفاوت است. هنگام درخواست مسیرهای حملونقل، گزینههای avoidHighways ، avoidTolls ، waypoints[] و optimizeWaypoints نادیده گرفته میشوند. میتوانید از طریق شیء TransitOptions ، گزینههای مسیریابی خاص ترانزیت را مشخص کنید.
مسیرهای حمل و نقل به زمان حساس هستند. مسیرها فقط برای چند وقت در آینده بازگردانده خواهند شد.
شیء TransitOptions حاوی فیلدهای زیر است:
{ arrivalTime: Date, departureTime: Date, modes[]: TransitMode, routingPreference: TransitRoutePreference }
این فیلدها در زیر توضیح داده شده است:
-
arrivalTime( اختیاری ) زمان مورد نظر رسیدن را به عنوان شیءDateمشخص می کند. اگر زمان ورود مشخص شده باشد، زمان حرکت نادیده گرفته می شود. -
departureTime( اختیاری ) زمان مورد نظر خروج را به عنوان شیءDateمشخص می کند. اگرarrivalTimeمشخص شده باشد، ساعتdepartureTimeنادیده گرفته می شود. در صورتی که هیچ مقداری برایdepartureTimeو یاarrivalTimeتعیین نشده باشد، تا کنون (یعنی زمان فعلی) پیشفرض میشود. -
modes[]( اختیاری ) آرایهای است که شامل یک یا چند شیءTransitModeاست. این فیلد ممکن است فقط در صورتی گنجانده شود که درخواست شامل یک کلید API باشد. هرTransitModeیک حالت انتقال ترجیحی را مشخص می کند. مقادیر زیر مجاز است:-
BUSنشان می دهد که مسیر محاسبه شده باید سفر با اتوبوس را ترجیح دهد. -
RAILنشان می دهد که مسیر محاسبه شده باید سفر با قطار، تراموا، قطار سبک و مترو را ترجیح دهد. -
SUBWAYنشان می دهد که مسیر محاسبه شده باید سفر با مترو را ترجیح دهد. -
TRAINنشان می دهد که مسیر محاسبه شده باید سفر با قطار را ترجیح دهد. -
TRAMنشان می دهد که مسیر محاسبه شده باید سفر با تراموا و راه آهن سبک را ترجیح دهد.
-
-
routingPreference( اختیاری ) اولویت ها را برای مسیرهای حمل و نقل مشخص می کند. با استفاده از این گزینه، به جای پذیرش بهترین مسیر پیشفرض انتخاب شده توسط API، میتوانید گزینههای بازگشتی را سوگیری کنید. این فیلد ممکن است تنها در صورتی مشخص شود که درخواست شامل یک کلید API باشد. مقادیر زیر مجاز است:-
FEWER_TRANSFERSنشان می دهد که مسیر محاسبه شده باید تعداد محدودی انتقال را ترجیح دهد. -
LESS_WALKINGنشان می دهد که مسیر محاسبه شده باید مقادیر محدودی پیاده روی را ترجیح دهد.
-
نمونه ای از DirectionsRequest با حمل و نقل در زیر نشان داده شده است:
{ origin: 'Hoboken NJ', destination: 'Carroll Gardens, Brooklyn', travelMode: 'TRANSIT', transitOptions: { departureTime: new Date(1337675679473), modes: ['BUS'], routingPreference: 'FEWER_TRANSFERS' }, unitSystem: google.maps.UnitSystem.IMPERIAL }
گزینه های رانندگی
می توانید از طریق شی DrivingOptions گزینه های مسیریابی را برای مسیرهای رانندگی مشخص کنید.
شی DrivingOptions شامل فیلدهای زیر است:
{ departureTime: Date, trafficModel: TrafficModel }
این فیلدها در زیر توضیح داده شده است:
-
departureTime( برای معتبر بودن شیءdrivingOptionsمورد نیاز است ) زمان مورد نظر خروج را به عنوان شیءDateمشخص می کند. مقدار باید روی زمان فعلی یا مدتی در آینده تنظیم شود. نمی تواند در گذشته باشد. (API همه تاریخها را به UTC تبدیل میکند تا از مدیریت منسجم در مناطق زمانی اطمینان حاصل کند.) برای مشتریان Google Maps Platform Premium, اگرdepartureTimeدر درخواست لحاظ کنید، API بهترین مسیر را با توجه به شرایط ترافیکی مورد انتظار در آن زمان برمیگرداند و زمان پیشبینیشده در ترافیک (duration_in_traffic) را در پاسخ شامل میشود. اگر زمان حرکت را مشخص نکنید (یعنی اگر درخواست شاملdrivingOptionsنباشد)، مسیر برگشتی به طور کلی مسیر خوبی است بدون در نظر گرفتن شرایط ترافیک. -
trafficModel( اختیاری ) مفروضاتی را مشخص می کند که باید هنگام محاسبه زمان در ترافیک استفاده شود. این تنظیم بر مقدار بازگشتی در قسمتduration_in_trafficدر پاسخ تأثیر میگذارد که شامل زمان پیشبینیشده در ترافیک بر اساس میانگینهای تاریخی است. پیش فرض بهbestguess. مقادیر زیر مجاز است:-
bestguess(پیشفرض) نشان میدهد کهduration_in_trafficبازگشتی باید بهترین تخمین زمان سفر با توجه به آنچه در مورد شرایط ترافیک تاریخی و ترافیک زنده شناخته شده است باشد. هرچه زمانdepartureTimeبه زمان حال نزدیکتر باشد، ترافیک زنده اهمیت بیشتری پیدا میکند. -
pessimisticنشان می دهد کهduration_in_trafficبازگشتی_in_traffic باید بیشتر از زمان واقعی سفر در بیشتر روزها باشد، اگرچه روزهای گاه به گاه با شرایط ترافیکی به خصوص بد ممکن است از این مقدار فراتر رود. -
optimisticنشان میدهد کهduration_in_trafficبرگشتی باید در بیشتر روزها کوتاهتر از زمان واقعی سفر باشد، اگرچه ممکن است روزهای گاه به گاه با شرایط ترافیکی خوب سریعتر از این مقدار باشد.
-
در زیر نمونه ای از DirectionsRequest برای مسیرهای رانندگی آمده است:
{ 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' } }
سیستم های واحد
به طور پیش فرض، جهت ها با استفاده از سیستم واحد کشور یا منطقه مبدا محاسبه و نمایش داده می شوند. (توجه: مبداها با استفاده از مختصات طول و عرض جغرافیایی به جای آدرسها بیان میشوند که همیشه به صورت پیشفرض واحدهای متریک هستند.) برای مثال، مسیری از "Chicago, IL" به "Toronto, ONT" نتایج را بر حسب مایل نشان میدهد، در حالی که مسیر معکوس نتایج را بر حسب کیلومتر نشان میدهد. با استفاده از یکی از مقادیر UnitSystem زیر میتوانید این سیستم واحد را با تنظیم صریح یکی در داخل درخواست لغو کنید:
-
UnitSystem.METRICاستفاده از سیستم متریک را مشخص می کند. فاصله ها با استفاده از کیلومتر نشان داده می شوند. -
UnitSystem.IMPERIALاستفاده از سیستم امپریال (انگلیسی) را مشخص می کند. فاصله ها با استفاده از مایل نشان داده می شوند.
توجه: این تنظیم سیستم واحد فقط بر متن نمایش داده شده به کاربر تأثیر می گذارد. نتیجه جهت ها همچنین حاوی مقادیر فاصله است که به کاربر نشان داده نمی شود و همیشه بر حسب متر بیان می شود.
جهت گیری منطقه برای مسیرها
سرویس Google Maps API Directions نتایج آدرس را تحت تأثیر دامنه (منطقه یا کشور) که بوت استرپ جاوا اسکریپت را از آنجا بارگیری کرده اید، برمی گرداند. (از آنجایی که اکثر کاربران https://maps.googleapis.com/ را بارگذاری می کنند، این یک دامنه ضمنی را برای ایالات متحده تنظیم می کند.) اگر بوت استرپ را از دامنه پشتیبانی شده دیگری بارگیری کنید، نتایج تحت تأثیر آن دامنه دریافت خواهید کرد. برای مثال، جستجوهای «سان فرانسیسکو» ممکن است نتایج متفاوتی را از برنامههایی که https://maps.googleapis.com/ (ایالات متحده آمریکا) بارگیری میکنند، نسبت به برنامههایی که http://maps.google.es/ (اسپانیا) بارگیری میکنند، نشان دهد.
همچنین می توانید سرویس Directions را طوری تنظیم کنید که با استفاده از پارامتر region ، نتایج بایاس به یک منطقه خاص را بازگرداند. این پارامتر یک کد منطقه ای را می گیرد که به عنوان یک زیربرچسب منطقه یونیکد دو کاراکتری (غیر عددی) مشخص شده است. در بیشتر موارد، این برچسبها مستقیماً به مقادیر دو کاراکتری ccTLD ("دامنه سطح بالا") مانند "uk" در "co.uk" نگاشت میشوند. در برخی موارد، تگ region از کدهای ISO-3166-1 نیز پشتیبانی می کند، که گاهی اوقات با مقادیر ccTLD متفاوت است (برای مثال "GB" برای "بریتانیا بزرگ").
هنگام استفاده از پارامتر region :
- فقط یک کشور یا منطقه را مشخص کنید. چندین مقدار نادیده گرفته می شوند و ممکن است منجر به یک درخواست ناموفق شود.
- فقط از زیربرچسب های منطقه دو کاراکتری (فرمت Unicode CLDR) استفاده کنید. همه ورودی های دیگر منجر به خطا می شوند.
سوگیری منطقه فقط برای کشورها و مناطق حمایت کننده جهت ها پشتیبانی می شود. برای مشاهده پوشش بین المللی برای Directions API (Legacy) با جزئیات پوشش پلت فرم Google Maps مشورت کنید.
رندر دستورالعمل
شروع یک درخواست جهت به DirectionsService با متد route() مستلزم ارسال یک فراخوان است که پس از تکمیل درخواست سرویس اجرا می شود. این فراخوانی یک DirectionsResult و یک کد DirectionsStatus را در پاسخ برمی گرداند.
پرس و جو وضعیت مسیرها
DirectionsStatus ممکن است مقادیر زیر را برگرداند:
-
OKنشان میدهد که پاسخ حاویDirectionsResultمعتبری است. -
NOT_FOUNDنشان میدهد که حداقل یکی از مکانهای مشخصشده در مبدأ، مقصد یا ایستگاههای بین درخواست نمیتواند جغرافیایی کدگذاری شود. -
ZERO_RESULTSنشان می دهد که هیچ مسیری بین مبدا و مقصد یافت نمی شود. -
MAX_WAYPOINTS_EXCEEDEDنشان میدهد که تعداد زیادی فیلدDirectionsWaypointدرDirectionsRequestارائه شده است. به بخش زیر در مورد محدودیت برای نقاط راه مراجعه کنید. -
MAX_ROUTE_LENGTH_EXCEEDEDنشان میدهد که مسیر درخواستی بسیار طولانی است و قابل پردازش نیست. این خطا زمانی رخ می دهد که جهت های پیچیده تری برگردانده شوند. سعی کنید تعداد نقاط بین راه، پیچ ها یا دستورالعمل ها را کاهش دهید. -
INVALID_REQUESTنشان می دهد کهDirectionsRequestارائه شده نامعتبر بوده است. شایعترین دلایل این کد خطا، درخواستهایی هستند که مبدأ یا مقصد یا درخواست حملونقل شامل نقاط بین راه را ندارند. -
OVER_QUERY_LIMITنشان می دهد که صفحه وب درخواست های زیادی را در بازه زمانی مجاز ارسال کرده است. -
REQUEST_DENIEDنشان می دهد که صفحه وب مجاز به استفاده از سرویس مسیرها نیست. -
UNKNOWN_ERRORنشان میدهد که درخواست جهت به دلیل خطای سرور قابل پردازش نیست. اگر دوباره تلاش کنید ممکن است درخواست با موفقیت انجام شود.
قبل از پردازش نتیجه، باید با بررسی این مقدار اطمینان حاصل کنید که پرس و جوی جهت ها نتایج معتبری را ارائه می دهد.
نمایش نتیجه Directions
DirectionsResult حاوی نتیجه پرس و جو جهت ها است که می توانید آن را خودتان مدیریت کنید یا به یک شی DirectionsRenderer ارسال کنید، که می تواند به طور خودکار نمایش نتیجه را روی نقشه انجام دهد.
برای نمایش DirectionsResult با استفاده از DirectionsRenderer ، باید موارد زیر را انجام دهید:
- یک شی
DirectionsRendererایجاد کنید. -
setMap()در رندر فراخوانی کنید تا به نقشه ارسال شده متصل شود. -
setDirections()در رندر فراخوانی کنید و همان طور که در بالا ذکر شدDirectionsResultارسال کنید. از آنجایی که رندر یکMVCObjectاست، به طور خودکار هر گونه تغییر در ویژگی های آن را شناسایی می کند و زمانی که جهت های مرتبط با آن تغییر کرد، نقشه را به روز می کند.
مثال زیر جهتهای بین دو مکان در مسیر 66 را محاسبه میکند، جایی که مبدا و مقصد با مقادیر دادهشده "start" و "end" در لیستهای کشویی تنظیم میشوند. DirectionsRenderer نمایش چند خط بین مکانهای مشخص شده و قرار دادن نشانگرها در مبدا، مقصد و هر نقطهای را در صورت وجود کنترل میکند.
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:
<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>
مثال زیر مسیرهایی را با استفاده از حالتهای مختلف سفر بین Haight-Ashbury تا Ocean Beach در سانفرانسیسکو، CA نشان میدهد:
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:
<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>
یک DirectionsRenderer نه تنها نمایش چند خط و هر نشانگر مرتبط را کنترل می کند، بلکه می تواند نمایش متنی جهت ها را نیز به صورت مجموعه ای از مراحل مدیریت کند. برای انجام این کار، setPanel() در DirectionsRenderer خود فراخوانی کنید و <div> را برای نمایش این اطلاعات ارسال کنید. انجام این کار همچنین تضمین می کند که اطلاعات مربوط به حق نسخه برداری و هرگونه هشداری را که ممکن است با نتیجه مرتبط باشد نمایش دهید.
دستورالعملهای متنی با استفاده از تنظیمات زبان ترجیحی مرورگر یا زبانی که هنگام بارگیری جاوا اسکریپت API با استفاده از پارامتر language مشخص شده است، ارائه میشود. (برای اطلاعات بیشتر، به محلی سازی مراجعه کنید. ) در مورد جهت های حمل و نقل، زمان در منطقه زمانی در آن ایستگاه حمل و نقل نمایش داده می شود.
مثال زیر با آنچه در بالا نشان داده شده است یکسان است، اما شامل یک پانل <div> است که در آن جهت ها نمایش داده می شود:
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:
<div id="map" style="float:left;width:70%;height:100%"></div> <div id="directionsPanel" style="float:right;width:30%;height:100%"></div>
شی DirectionsResult
هنگام ارسال یک درخواست جهت به DirectionsService ، پاسخی متشکل از یک کد وضعیت و یک نتیجه دریافت می کنید که یک شی DirectionsResult است. DirectionsResult یک شی به معنای واقعی کلمه با فیلدهای زیر است:
-
geocoded_waypoints[]حاوی آرایهای از اشیاءDirectionsGeocodedWaypointاست که هر کدام حاوی جزئیاتی در مورد کدگذاری جغرافیایی مبدا، مقصد و ایستگاههای بین راهی است. -
routes[]حاوی آرایه ای از اشیاءDirectionsRouteاست. هر مسیر راهی را برای رسیدن از مبدا به مقصد ارائه شده درDirectionsRequestنشان می دهد. به طور کلی، تنها یک مسیر برای هر درخواست داده شده برگردانده می شود، مگر اینکه قسمتprovideRouteAlternativesدرخواست رویtrueتنظیم شده باشد که در آن مسیرهای متعددی ممکن است برگردانده شوند.
نکته: ویژگی via_waypoint در مسیرهای جایگزین منسوخ شده است. نسخه 3.27 آخرین نسخه API است که از طریق ایستگاه های بین راه در مسیرهای جایگزین، موارد اضافی را اضافه می کند. برای نسخههای 3.28 و بالاتر API، میتوانید با غیرفعال کردن کشیدن مسیرهای جایگزین، مسیرهای قابل کشیدن را با استفاده از سرویس Directions پیادهسازی کنید. فقط مسیر اصلی باید قابل کشیدن باشد. کاربران می توانند مسیر اصلی را تا زمانی که با یک مسیر جایگزین مطابقت داشته باشد بکشند.
مسیرهای مسیرهای جغرافیایی کد شده
یک DirectionsGeocodedWaypoint حاوی جزئیاتی درباره ژئوکدگذاری مبدا، مقصد و ایستگاه های بین راهی است.
DirectionsGeocodedWaypoint یک شی با فیلدهای زیر است:
-
geocoder_statusکد وضعیت حاصل از عملیات geocoding را نشان می دهد. این فیلد ممکن است حاوی مقادیر زیر باشد.-
"OK"نشان می دهد که هیچ خطایی رخ نداده است. آدرس با موفقیت تجزیه شد و حداقل یک ژئوکد برگردانده شد. -
"ZERO_RESULTS"نشان می دهد که ژئوکد موفقیت آمیز بود اما هیچ نتیجه ای نداشت. این ممکن است در صورتی رخ دهد که geocoder یکaddressغیرموجود ارسال شده باشد.
-
partial_matchنشان می دهد که geocoder مطابقت دقیقی با درخواست اصلی برنگردانده است، اگرچه می تواند بخشی از آدرس درخواستی را مطابقت دهد. ممکن است بخواهید درخواست اصلی برای غلط املایی و/یا آدرس ناقص را بررسی کنید.تطابق جزئی اغلب برای آدرسهای خیابانی رخ میدهد که در محلی که در درخواست عبور میکنید وجود ندارد. زمانی که درخواستی با دو یا چند مکان در همان محل مطابقت داشته باشد، مسابقات جزئی نیز ممکن است برگردانده شوند. به عنوان مثال، "Hillpar St, Bristol, UK" یک مسابقه جزئی را برای خیابان هنری و خیابان هنریتا برمی گرداند. توجه داشته باشید که اگر یک درخواست شامل یک جزء آدرس غلط املایی باشد، سرویس کدگذاری جغرافیایی ممکن است یک آدرس جایگزین پیشنهاد دهد. پیشنهادهایی که از این طریق فعال می شوند نیز به عنوان تطابق جزئی علامت گذاری می شوند.
-
place_idیک شناسه منحصر به فرد یک مکان است که می تواند با سایر API های Google استفاده شود. برای مثال، میتوانید ازplace_idبا کتابخانه Google Places API برای دریافت جزئیات یک کسبوکار محلی، مانند شماره تلفن، ساعات کاری، نظرات کاربران و موارد دیگر استفاده کنید. نمای کلی شناسه مکان را ببینید. -
types[]آرایه ای است که نوع نتیجه برگشتی را نشان می دهد. این آرایه حاوی مجموعهای از صفر یا چند تگ است که نوع ویژگی برگردانده شده در نتیجه را مشخص میکند. برای مثال، ژئوکد «شیکاگو» «محلی» را برمیگرداند که نشان میدهد «شیکاگو» یک شهر است، و همچنین «سیاسی» را برمیگرداند که نشان میدهد یک نهاد سیاسی است.
مسیرهای مسیرها
توجه : شیء قدیمی DirectionsTrip به DirectionsRoute تغییر نام داده است. توجه داشته باشید که یک مسیر اکنون به کل سفر شروع تا پایان اشاره دارد، نه صرفاً یک مرحله از سفر والدین.
DirectionsRoute حاوی یک نتیجه واحد از مبدا و مقصد مشخص شده است. این مسیر ممکن است از یک یا چند پا (از نوع DirectionsLeg ) تشکیل شده باشد که بستگی به این دارد که آیا نقطهای بین راه مشخص شده است یا خیر. همچنین، مسیر همچنین حاوی اطلاعات حق چاپ و هشدار است که باید علاوه بر اطلاعات مسیریابی به کاربر نمایش داده شود.
DirectionsRoute یک شی به معنای واقعی کلمه با فیلدهای زیر است:
-
legs[]حاوی آرایهای از اشیاءDirectionsLegاست که هر کدام حاوی اطلاعاتی در مورد یک قسمت از مسیر، از دو مکان در مسیر معین است. برای هر نقطه راه یا مقصد مشخص شده یک پایه جداگانه وجود خواهد داشت. (مسیری که هیچ نقطه بین راه ندارد دقیقاً شامل یکDirectionsLegخواهد بود.) هر پا از یک سری مراحلDirectionStepتشکیل شده است. -
waypoint_orderحاوی آرایهای است که ترتیب هر نقطهای را در مسیر محاسبهشده نشان میدهد. اگرDirectionsRequestبهoptimizeWaypoints: trueارسال شود، این آرایه ممکن است حاوی یک ترتیب تغییر یافته باشد. -
overview_pathشامل آرایهای ازLatLngاست که یک مسیر تقریبی (هموار) از جهتهای حاصل را نشان میدهد. -
overview_polylineشامل یک شیpointsمنفرد است که نمایش چند خطی رمزگذاری شده مسیر را در خود دارد. این چند خط یک مسیر تقریبی (هموار) جهت های حاصل است. -
boundsحاوی یکLatLngBoundsاست که مرزهای چند خط را در این مسیر مشخص نشان می دهد. -
copyrightsحاوی متن حق چاپ است که برای این مسیر نمایش داده می شود. -
warnings[]حاوی آرایه ای از اخطارها است که هنگام نمایش این جهت ها نمایش داده می شود. اگر از شیء ارائه شدهDirectionsRendererاستفاده نمی کنید، باید خودتان این هشدارها را مدیریت کرده و نمایش دهید. -
fareشامل کل کرایه (یعنی کل هزینه بلیط) در این مسیر است. این دارایی فقط برای درخواست های حمل و نقل و فقط برای مسیرهایی که اطلاعات کرایه برای تمام مسیرهای حمل و نقل در دسترس است، بازگردانده می شود. اطلاعات شامل:-
currency: یک کد ارز ISO 4217 که واحد پولی را نشان می دهد که مبلغ با آن بیان می شود. -
value: کل مبلغ کرایه، به ارز مشخص شده در بالا.
-
مسیرها پاها
توجه : شیء قدیمی DirectionsRoute به DirectionsLeg تغییر نام داده است.
DirectionsLeg یک مرحله از سفر را از مبدا تا مقصد در مسیر محاسبه شده تعریف می کند. برای مسیرهایی که هیچ نقطه بین راهی ندارند، مسیر از یک «پایه» تشکیل میشود، اما برای مسیرهایی که یک یا چند ایستگاه بین راهی را تعریف میکنند، مسیر از یک یا چند پا تشکیل میشود که مربوط به بخشهای خاص سفر است.
DirectionsLeg یک شی به معنای واقعی کلمه با فیلدهای زیر است:
-
steps[]حاوی آرایه ای از اشیاءDirectionsStepاست که اطلاعات مربوط به هر مرحله جداگانه از مرحله سفر را نشان می دهد. distanceکل مسافت طی شده توسط این پا را به عنوان یک شیDistanceبه شکل زیر نشان می دهد:-
valueفاصله را بر حسب متر نشان می دهد -
textحاوی یک نمایش رشته ای از فاصله است که به طور پیش فرض در واحدهای مورد استفاده در مبدا نمایش داده می شود. (به عنوان مثال، مایل ها برای هر مبدأ در ایالات متحده استفاده می شود.) شما می توانید این سیستم واحد را با تنظیم خاص یکUnitSystemدر جستار اصلی لغو کنید. توجه داشته باشید که صرف نظر از سیستم واحدی که استفاده می کنید، فیلدdistance.valueهمیشه حاوی مقداری است که بر حسب متر بیان می شود.
اگر فاصله ناشناخته باشد، ممکن است این فیلدها تعریف نشده باشند.
-
durationکل مدت این پا را به عنوان یک شیDurationاز فرم زیر نشان می دهد:-
valueمدت زمان را بر حسب ثانیه نشان می دهد. -
textشامل نمایش رشته ای از مدت زمان است.
اگر مدت زمان نامشخص باشد، ممکن است این فیلدها تعریف نشده باشند.
-
duration_in_trafficکل مدت این مرحله را با در نظر گرفتن شرایط ترافیک فعلی نشان می دهد.duration_in_trafficفقط در صورتی برگردانده می شود که همه موارد زیر درست باشد:- این درخواست شامل ایستگاه های توقف نیست. به این معنا که شامل نقاطی نمیشود که
stopoverدر آنهاtrueاست. - درخواست به طور خاص برای مسیرهای رانندگی است -
modeرویdrivingتنظیم شده است. -
departureTimeبه عنوان بخشی از قسمتdrivingOptionsدر درخواست گنجانده شده است. - شرایط ترافیک برای مسیر درخواستی فراهم است.
duration_in_trafficشامل فیلدهای زیر است:-
valueمدت زمان را بر حسب ثانیه نشان می دهد. -
textحاوی نمایشی از مدت زمان قابل خواندن برای انسان است.
- این درخواست شامل ایستگاه های توقف نیست. به این معنا که شامل نقاطی نمیشود که
-
arrival_timeشامل زمان تخمینی رسیدن برای این مرحله است. این دارایی فقط برای مسیرهای حمل و نقل بازگردانده می شود. نتیجه به عنوان یک شیTimeبا سه ویژگی برگردانده می شود:- زمان مشخص شده را به عنوان یک شیء
Dateجاوا اسکریپتvalue. - زمان مشخص شده را به عنوان یک رشته
text. زمان در منطقه زمانی ایستگاه حمل و نقل نمایش داده می شود. -
time_zoneشامل منطقه زمانی این ایستگاه است. مقدار، نام منطقه زمانی است که در پایگاه داده منطقه زمانی IANA تعریف شده است، به عنوان مثال "America/New_York".
- زمان مشخص شده را به عنوان یک شیء
-
departure_timeشامل زمان تخمینی حرکت برای این پا است که به عنوان یک شیTimeمشخص شده است.departure_timeفقط برای مسیرهای حملونقل عمومی در دسترس است. -
start_locationحاویLatLngمبدا این پا است. از آنجایی که سرویس وب Directions جهتهای بین مکانها را با استفاده از نزدیکترین گزینه حملونقل (معمولاً یک جاده) در نقاط شروع و پایان محاسبه میکند،start_locationممکن است با مبدأ ارائهشده این پا متفاوت باشد، برای مثال، اگر جادهای نزدیک مبدا نباشد. -
end_locationحاویLatLngمقصد این قسمت است. از آنجایی کهDirectionsServiceجهتهای بین مکانها را با استفاده از نزدیکترین گزینه حملونقل (معمولاً یک جاده) در نقطه شروع و پایان محاسبه میکند، اگر مثلاً جادهای نزدیک مقصد نباشد،end_locationممکن است با مقصد ارائهشده در این قسمت متفاوت باشد. -
start_addressحاوی آدرس قابل خواندن برای انسان (معمولاً آدرس خیابان) شروع این قسمت است.
این محتوا باید همانطور که هست خوانده شود. آدرس فرمت شده را به صورت برنامه نویسی تجزیه نکنید. -
end_addressحاوی آدرس قابل خواندن برای انسان (معمولاً آدرس خیابان) انتهای این قسمت است.
این محتوا باید همانطور که هست خوانده شود. آدرس فرمت شده را به صورت برنامه نویسی تجزیه نکنید.
مراحل دستورالعمل
DirectionsStep اتمی ترین واحد مسیر یک جهت است که شامل یک مرحله است که یک دستورالعمل خاص و منفرد را در سفر توصیف می کند. به عنوان مثال "در خیابان W. 4th به چپ بپیچید." مرحله نه تنها دستورالعمل را توصیف می کند، بلکه حاوی اطلاعات فاصله و مدت مربوط به نحوه ارتباط این مرحله با مرحله زیر است. به عنوان مثال، مرحله ای که به عنوان "ادغام در I-80 West" مشخص می شود ممکن است دارای مدت زمان "37 مایل" و "40 دقیقه" باشد که نشان می دهد مرحله بعدی 37 مایل/40 دقیقه از این مرحله است.
هنگام استفاده از سرویس مسیرها برای جستجوی مسیرهای حمل و نقل، آرایه مراحل شامل اطلاعات ویژه حمل و نقل اضافی در قالب یک شی transit خواهد بود. اگر مسیرها شامل چندین حالت حملونقل باشند، دستورالعملهای دقیق برای قدمهای پیادهروی یا رانندگی در یک آرایه steps[] ارائه میشود. به عنوان مثال، یک گام پیادهروی شامل مسیرهایی از محل شروع و پایان است: "Walk to Innes Ave & Fitch St". این مرحله شامل مسیرهای پیادهروی دقیق برای آن مسیر در آرایههای steps[] میشود، مانند: «به سمت شمال غربی»، «به چپ روی آرلیوس واکر بپیچید» و «به سمت چپ به خیابان اینس بپیچید».
DirectionsStep یک شی به معنای واقعی کلمه با فیلدهای زیر است:
-
instructionsحاوی دستورالعمل هایی برای این مرحله در یک رشته متنی است. -
distanceشامل مسافت طی شده توسط این مرحله تا مرحله بعدی به عنوان یک شیDistanceاست. (توضیحات را درDirectionsLegبالا ببینید.) اگر فاصله ناشناخته باشد، ممکن است این فیلد تعریف نشده باشد. -
durationشامل تخمینی از زمان مورد نیاز برای انجام مرحله، تا مرحله بعدی، به عنوان یک شیDurationاست. (توضیحات را درDirectionsLegبالا ببینید.) اگر مدت زمان نامشخص باشد، ممکن است این فیلد تعریف نشده باشد. -
start_locationحاویLatLngجغرافیایی نقطه شروع این مرحله است. -
end_locationحاویLatLngنقطه پایانی این مرحله است. -
polylineشامل یک شیpointsواحد است که نمایش چند خطی رمزگذاری شده از مرحله را در خود دارد. این چند خط یک مسیر تقریبی (هموار) پله است. -
steps[]یک شی لفظیDirectionsStepکه حاوی دستورالعمل های دقیق برای قدم زدن یا رانندگی در مسیرهای حمل و نقل است. مراحل فرعی فقط برای مسیرهای حمل و نقل در دسترس هستند. -
travel_modeشاملTravelModeمورد استفاده در این مرحله است. مسیرهای حمل و نقل ممکن است ترکیبی از مسیرهای پیاده روی و حمل و نقل باشد. -
pathشامل آرایه ای ازLatLngsاست که سیر این مرحله را توصیف می کند. -
transitشامل اطلاعات خاص حمل و نقل، مانند زمان ورود و خروج، و نام خط حمل و نقل است.
اطلاعات ویژه حمل و نقل
مسیرهای حمل و نقل اطلاعات اضافی را که برای سایر روش های حمل و نقل مرتبط نیست، برمی گرداند. این ویژگیهای اضافی از طریق شی TransitDetails در معرض دید قرار میگیرند که به عنوان ویژگی DirectionsStep برگردانده میشود. از شی TransitDetails می توانید به اطلاعات اضافی برای اشیاء TransitStop ، TransitLine ، TransitAgency و VehicleType دسترسی داشته باشید که در زیر توضیح داده شده است.
جزئیات حمل و نقل
شی TransitDetails ویژگی های زیر را نشان می دهد:
-
arrival_stopحاوی یک شیTransitStopاست که نشان دهنده ایستگاه/ایستگاه رسیدن با ویژگی های زیر است:- نام ایستگاه/ایستگاه حمل و نقل را
name. به عنوان مثال "میدان اتحادیه". -
locationمکانی ایستگاه/ایستگاه حمل و نقل، که به عنوانLatLngنشان داده شده است.
- نام ایستگاه/ایستگاه حمل و نقل را
-
departure_stopحاوی یک شیTransitStopاست که نشان دهنده ایستگاه/ایست خروج است. -
arrival_timeشامل زمان رسیدن است که به عنوان یک شیTimeبا سه ویژگی مشخص شده است:- زمان مشخص شده را به عنوان یک شیء
Dateجاوا اسکریپتvalue. - زمان مشخص شده را به عنوان یک رشته
text. زمان در منطقه زمانی ایستگاه حمل و نقل نمایش داده می شود. -
time_zoneشامل منطقه زمانی این ایستگاه است. مقدار، نام منطقه زمانی است که در پایگاه داده منطقه زمانی IANA تعریف شده است، به عنوان مثال "America/New_York".
- زمان مشخص شده را به عنوان یک شیء
-
departure_timeشامل زمان خروج است که به عنوان یک شیTimeمشخص شده است. -
headsignنشان می دهد جهت حرکت در این خط، همانطور که روی وسیله نقلیه یا در ایستگاه حرکت مشخص شده است. این اغلب ایستگاه پایانه خواهد بود. -
headwayکه در دسترس باشد، این تعداد ثانیه های مورد انتظار بین حرکت از همان توقف در این زمان را مشخص می کند. به عنوان مثال، با ارزشheadway600، اگر اتوبوس خود را از دست بدهید، ده دقیقه منتظر خواهید بود. -
lineحاوی یک شیءTransitLineاست که حاوی اطلاعاتی در مورد خط انتقال استفاده شده در این مرحله است.TransitLineنام و اپراتور خط را به همراه سایر خصوصیات شرح داده شده در مستندات مرجعTransitLineارائه می دهد. -
num_stopsشامل تعداد توقف های این مرحله است. شامل توقف ورود، اما نه توقف خروج. به عنوان مثال، اگر مسیرهای شما شامل خروج از ایستگاه A، عبور از ایستگاه های B و C و رسیدن به ایستگاه D باشد،num_stops3 را برمی گرداند.
خط ترانزیت
شی TransitLine ویژگی های زیر را نشان می دهد:
-
nameشامل نام کامل این خط ترانزیت است. به عنوان مثال "7 Avenue Express" یا "14th St Crosstown". -
short_nameشامل نام کوتاه این خط ترانزیت است. این معمولاً یک شماره خط است، مانند "2" یا "M14". -
agenciesآرایه ای است که شامل یک شیTransitAgencyاست. شیTransitAgencyاطلاعاتی در مورد اپراتور این خط از جمله ویژگی های زیر ارائه می دهد:-
nameشامل نام آژانس حمل و نقل است. -
phoneحاوی شماره تلفن آژانس حمل و نقل است. -
urlحاوی URL برای آژانس حمل و نقل است.
توجه : اگر بهجای استفاده از شی
DirectionsRenderer، مسیرهای حملونقل عمومی را بهصورت دستی ارائه میدهید، باید نامها و نشانیهای اینترنتی آژانسهای حمل و نقلی را که نتایج سفر را سرویس میدهند، نمایش دهید. -
-
urlحاوی یک URL برای این خط حمل و نقل است که توسط آژانس حمل و نقل ارائه شده است. -
iconحاوی یک URL برای نماد مرتبط با این خط است. اکثر شهرها از نمادهای عمومی استفاده می کنند که بسته به نوع وسیله نقلیه متفاوت است. برخی از خطوط ترانزیت، مانند سیستم متروی نیویورک، دارای نمادهای مخصوص آن خط هستند. -
colorحاوی رنگی است که معمولاً در این ترانزیت در علائم استفاده می شود. رنگ به عنوان یک رشته هگز مانند: #FF0033 مشخص می شود. -
text_colorحاوی رنگ متن است که معمولاً برای علائم این خط استفاده می شود. رنگ به عنوان یک رشته هگز مشخص می شود. -
vehicleشامل یک شیءVehicleاست که شامل خواص زیر است:-
nameشامل نام وسیله نقلیه در این خط است. به عنوان مثال "مترو". -
typeشامل نوع وسیله نقلیه مورد استفاده در این خط است. برای لیست کاملی از مقادیر پشتیبانی شده ، مستندات نوع وسیله نقلیه را مشاهده کنید. -
iconحاوی URL برای نماد است که معمولاً با این نوع وسیله نقلیه همراه است. -
local_iconحاوی URL برای نماد مرتبط با این نوع وسیله نقلیه ، بر اساس علائم حمل و نقل محلی است.
-
نوع وسیله نقلیه
شیء VehicleType خواص زیر را در معرض نمایش می گذارد:
| ارزش | تعریف |
|---|---|
VehicleType.RAIL | راه آهن. |
VehicleType.METRO_RAIL | ترانزیت راه آهن سبک. |
VehicleType.SUBWAY | راه آهن سبک زیرزمینی. |
VehicleType.TRAM | بالاتر از راه آهن سبک زمین. |
VehicleType.MONORAIL | مونوریل |
VehicleType.HEAVY_RAIL | راه آهن سنگین |
VehicleType.COMMUTER_TRAIN | راه آهن مسافرتی. |
VehicleType.HIGH_SPEED_TRAIN | قطار پر سرعت. |
VehicleType.BUS | اتوبوس |
VehicleType.INTERCITY_BUS | اتوبوس بین شهری. |
VehicleType.TROLLEYBUS | چرخ دستی. |
VehicleType.SHARE_TAXI | Taxi Share نوعی اتوبوس است که توانایی رها کردن و انتخاب مسافر در هر نقطه از مسیر خود را دارد. |
VehicleType.FERRY | کشتی |
VehicleType.CABLE_CAR | وسیله نقلیه ای که معمولاً روی کابل کار می کند ، معمولاً روی زمین. کابل های هوایی ممکن است از نوع VehicleType.GONDOLA_LIFT باشد. |
VehicleType.GONDOLA_LIFT | یک کابل هوایی. |
VehicleType.FUNICULAR | وسیله نقلیه ای که توسط یک کابل شیب شیب دار کشیده می شود. یک قارچ به طور معمول از دو اتومبیل تشکیل شده است که هر ماشین به عنوان ضد وزن برای دیگری عمل می کند. |
VehicleType.OTHER | تمام وسایل نقلیه دیگر این نوع را برمی گردانند. |
بازرسی از جهت گیری ها
مؤلفه های DirectionsResults - DirectionsRoute ، DirectionsLeg ، DirectionsStep و TransitDetails - ممکن است هنگام تجزیه هرگونه پاسخ جهت مورد بازرسی و استفاده قرار گیرند.
نکته مهم : اگر به جای استفاده از شیء DirectionsRenderer دستورالعمل های حمل و نقل را بصورت دستی ارائه می دهید ، باید نام ها و URL های آژانس های ترانزیتی را که خدمات نتایج سفر را ارائه می دهند ، نمایش دهید.
مثال زیر مسیرهای پیاده روی به برخی از جاذبه های گردشگری در شهر نیویورک را ترسیم می کند. ما برای اضافه کردن نشانگرها برای هر مرحله ، DirectionsStep مسیر استفاده می کنیم و اطلاعات را به یک متن آموزشی برای آن مرحله به یک InfoWindow وصل می کنیم.
توجه : از آنجا که ما در حال محاسبه جهت های پیاده روی هستیم ، ما در یک صفحه جداگانه <div> هشدارهایی را نیز به کاربر نشان می دهیم.
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:
<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>با استفاده از ایستگاه های راه در مسیرها
همانطور که در DirectionSrequest ذکر شد ، ممکن است هنگام محاسبه مسیرها با استفاده از سرویس مسیرها برای پیاده روی ، دوچرخه سواری یا مسیرهای رانندگی ، نقاط راه (از نوع DirectionsWaypoint ) را مشخص کنید. ایستگاه های راه برای جهت های حمل و نقل در دسترس نیستند. Waypoints به شما امکان می دهد مسیرها را از طریق مکان های اضافی محاسبه کنید ، در این صورت مسیر برگشتی از طریق ایستگاه های داده شده عبور می کند.
یک waypoint شامل زمینه های زیر است:
-
location(مورد نیاز) آدرس ایستگاه راه را مشخص می کند. -
stopover(اختیاری) نشان می دهد که آیا این نقطه راه یک توقف واقعی در مسیر (true) است یا در عوض فقط یک ترجیح برای مسیریابی از طریق مکان مشخص شده (false) است. توقف به طور پیش فرضtrueاست.
به طور پیش فرض ، سرویس دستورالعمل ها مسیری را از طریق ایستگاه های راه ارائه شده به ترتیب داده شده خود محاسبه می کند. به صورت اختیاری ، شما ممکن است به optimizeWaypoints: true در DirectionsRequest به شما اجازه می دهد تا با تنظیم مجدد نقاط راه به ترتیب کارآمد ، مسیر ارائه شده مسیر ارائه شده را بهینه کند. (این بهینه سازی کاربردی از مشکل فروشنده مسافرتی است.) زمان سفر عامل اصلی بهینه سازی شده است ، اما سایر عوامل مانند فاصله ، تعداد نوبت ها و بسیاری موارد دیگر ممکن است هنگام تصمیم گیری در مورد کارآمدترین مسیر در نظر گرفته شود. برای بهینه سازی مسیر خود ، همه نقاط راه باید برای سرویس های مسیرها متوقف شود.
اگر به خدمات دستورالعمل ها برای بهینه سازی ترتیب ایستگاه های راه خود دستور دهید ، سفارش آنها در قسمت waypoint_order در شیء DirectionsResult بازگردانده می شود.
مثال زیر مسیرهای متقاطع کشور را در سراسر ایالات متحده با استفاده از انواع نقاط شروع ، نقاط پایانی و ایستگاه های راه محاسبه می کند. (برای انتخاب چندین ایستگاه راه ، هنگام انتخاب موارد موجود در لیست ، CTRL را کلیک کنید .) توجه داشته باشید که ما routes.start_address را بازرسی می کنیم. Start_Address و routes.end_address برای ارائه متن برای هر مسیر شروع و پایان هر مسیر.
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;
جاوا اسکریپت
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;
محدودیت ها و محدودیت هایی برای ایستگاه های راه
محدودیت ها و محدودیت های استفاده زیر اعمال می شود:
- حداکثر تعداد ایستگاه های راه مجاز هنگام استفاده از سرویس مسیرها در نقشه های API JavaScript 25 است ، به علاوه منشاء و مقصد. محدودیت ها برای سرویس های وب API (میراث) دستورالعمل ها یکسان است.
- برای سرویس های وب API (Legacy) ، به مشتریان 25 نقطه راه ، به علاوه مبدا و مقصد مجاز است.
- Google Maps Platform Plate Plam Plan به 25 نقطه راه ، به علاوه مبدا و مقصد مجاز است.
- ایستگاه های راه برای جهت های حمل و نقل پشتیبانی نمی شوند.
دستورالعمل های قابل کشیدن
کاربران ممکن است در صورت قابل کشیدن ، مسیرهای دوچرخه سواری ، پیاده روی یا رانندگی را با استفاده از یک DirectionsRenderer به صورت پویا تغییر دهند ، به کاربر اجازه می دهد با کلیک و کشیدن مسیرهای حاصل از نقشه ، مسیرها را انتخاب و تغییر دهد. شما نشان می دهید که آیا صفحه نمایش یک رندر با تنظیم خاصیت draggable خود در true ، به مسیرهای قابل کشیدن اجازه می دهد. دستورالعمل های ترانزیت قابل کشیدن نیست.
هنگامی که دستورالعمل ها قابل کشیدن هستند ، کاربر ممکن است هر نقطه را در مسیر (یا نقطه راه) نتیجه ارائه شده انتخاب کند و مؤلفه مشخص شده را به یک مکان جدید منتقل کند. DirectionsRenderer برای نشان دادن مسیر اصلاح شده به صورت پویا به روز می شود. پس از انتشار ، یک نقطه راه انتقالی به نقشه اضافه می شود (که توسط یک نشانگر سفید کوچک نشان داده شده است). انتخاب و جابجایی یک بخش مسیر ، آن پا از مسیر را تغییر می دهد ، در حالی که انتخاب و حرکت یک نشانگر Waypoint (از جمله نقاط شروع و پایان) پاهای مسیر را که از آن ایستگاه عبور می کند تغییر می دهد.
از آنجا که دستورالعمل های قابل کشیدن اصلاح شده و طرف مشتری هستند ، ممکن است شما بخواهید رویداد را بر روی directions_changed در DirectionsRenderer نظارت و کنترل کنید تا هنگام تغییر دستورالعمل های نمایش داده شده به شما اطلاع داده شود.
کد زیر سفر از پرت در سواحل غربی استرالیا به سیدنی در ساحل شرقی را نشان می دهد. این کد برای به روزرسانی مسافت کل پاهای سفر ، بر روی رویداد directions_changed نظارت می کند.
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;
جاوا اسکریپت
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;