نمای کلی
با استفاده از شی DirectionsService
می توانید جهت ها را (با استفاده از روش های مختلف حمل و نقل) محاسبه کنید. این شی با سرویس مسیرهای API Google Maps ارتباط برقرار می کند که درخواست های جهت را دریافت می کند و یک مسیر کارآمد را برمی گرداند. زمان سفر عامل اولیه ای است که بهینه می شود، اما عوامل دیگری مانند مسافت، تعداد دور و بسیاری موارد دیگر ممکن است در نظر گرفته شوند. میتوانید این نتایج دستورالعملها را خودتان مدیریت کنید یا از شی DirectionsRenderer
برای ارائه این نتایج استفاده کنید.
هنگام تعیین مبدا یا مقصد در یک درخواست جهت، می توانید یک رشته پرس و جو (به عنوان مثال، "Chicago, IL" یا "Darwin, NSW, Australia")، یک مقدار LatLng
یا یک شی Place را مشخص کنید.
سرویس Directions می تواند جهت های چند بخشی را با استفاده از یک سری از ایستگاه های بین راه بازگرداند. مسیرها به صورت چند خطی که مسیر را بر روی نقشه ترسیم میکند، یا بهعنوان مجموعهای از توضیحات متنی در یک عنصر <div>
نمایش داده میشوند (مثلاً «به سمت راست روی سطح شیبدار پل ویلیامزبورگ بپیچید»).
شروع کردن
قبل از استفاده از سرویس Directions در Maps JavaScript API، ابتدا مطمئن شوید که Directions API در Google Cloud Console، در همان پروژه ای که برای Maps JavaScript API تنظیم کرده اید، فعال است.
برای مشاهده لیست API های فعال:
- به Google Cloud Console بروید.
- روی دکمه Select a project کلیک کنید، سپس همان پروژه ای را که برای Maps JavaScript API تنظیم کرده اید انتخاب کنید و روی Open کلیک کنید.
- از لیست APIها در داشبورد ، به دنبال Directions API بگردید.
- اگر API را در لیست مشاهده کردید، همه چیز آماده است. اگر API در لیست نیست ، آن را فعال کنید:
- در بالای صفحه، ENABLE API را انتخاب کنید تا تب Library نمایش داده شود. یا از منوی سمت چپ، کتابخانه را انتخاب کنید.
- Directions API را جستجو کنید، سپس آن را از لیست نتایج انتخاب کنید.
- ENABLE را انتخاب کنید. وقتی فرآیند به پایان رسید، Directions API در لیست APIها در داشبورد ظاهر میشود.
قیمت گذاری و سیاست ها
قیمت گذاری
از 16 ژوئیه 2018، یک طرح جدید قیمتگذاری پرداختی برای Maps، Routes و Places اجرا شد. برای اطلاعات بیشتر در مورد قیمتگذاری و محدودیتهای استفاده جدید برای استفاده از سرویس JavaScript Directions، به Usage and Billing for Directions API مراجعه کنید.
سیاست ها
استفاده از سرویس Directions باید مطابق با خط مشی های توضیح داده شده برای Directions API باشد.
درخواست مسیرها
دسترسی به سرویس 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
( اختیاری ) مقادیری را مشخص می کند که فقط برای درخواست هایی کهtravelMode
TRANSIT
است اعمال می شود . مقادیر معتبر در گزینه های حمل و نقل در زیر توضیح داده شده است. -
drivingOptions
( اختیاری ) مقادیری را مشخص می کند که فقط برای درخواست هایی اعمال می شود که در آنtravelMode
DRIVING
است. مقادیر معتبر در گزینه های رانندگی در زیر توضیح داده شده است. unitSystem
( اختیاری ) مشخص می کند که از چه سیستم واحدی هنگام نمایش نتایج استفاده شود. مقادیر معتبر در سیستم های واحد در زیر مشخص شده است.waypoints[]
( اختیاری ) آرایه ای ازDirectionsWaypoint
s را مشخص می کند. نقاط راه یک مسیر را با مسیریابی آن در مکان(های) مشخص شده تغییر می دهند. یک نقطه بین به عنوان یک شی به معنای واقعی کلمه با فیلدهای زیر مشخص می شود:-
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 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 با جزئیات پوشش پلت فرم 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
با سه ویژگی مشخص شده است:-
value
زمان مشخص شده به عنوان یک شیءDate
JavaScript. - زمان مشخص
text
به عنوان یک رشته. زمان در منطقه زمانی توقف حمل و نقل نمایش داده می شود. -
time_zone
شامل منطقه زمانی این ایستگاه است. مقدار نام منطقه زمانی است که در پایگاه داده منطقه زمانی IANA تعریف شده است ، به عنوان مثال "America/New_york".
-
-
departure_time
شامل زمان عزیمت است که به عنوان یک شیءTime
مشخص شده است. -
headsign
جهت سفر به این خط را مشخص می کند ، همانطور که در وسیله نقلیه یا در ایستگاه عزیمت مشخص شده است. این اغلب ایستگاه پایانه خواهد بود. -
headway
در صورت وجود ، این تعداد مورد انتظار ثانیه بین عزیمت از همان توقف در این زمان را مشخص می کند. به عنوان مثال ، با ارزشheadway
600 ، انتظار دارید که اگر اتوبوس خود را از دست بدهید ، ده دقیقه منتظر بمانید. -
line
حاوی یک شیءTransitLine
خطی است که حاوی اطلاعاتی در مورد خط ترانزیت مورد استفاده در این مرحله است.TransitLine
نام و اپراتور خط را به همراه سایر خصوصیات شرح داده شده در مستندات مرجعTransitLine
ارائه می دهد. -
num_stops
شامل تعداد توقف در این مرحله است. شامل توقف ورود است ، اما نه توقف عزیمت. به عنوان مثال ، اگر دستورالعمل های شما مستلزم ترک از توقف A ، عبور از توقف B و C و رسیدن به Stop D باشد ،num_stops
3 باز خواهد گشت.
خط ترانزیت
شیء TransitLine
خصوصیات زیر را در معرض دید قرار می دهد:
-
name
حاوی نام کامل این خط ترانزیت است. به عنوان مثال "7 خیابان اکسپرس" یا "14th Crosstown". -
short_name
شامل نام کوتاه این خط ترانزیت است. این به طور معمول یک شماره خط مانند "2" یا "M14" خواهد بود. -
agencies
آرایه ای است که حاوی یک شیءTransitAgency
واحد است. شیءTransitAgency
اطلاعاتی در مورد اپراتور این خط ، از جمله خصوصیات زیر ارائه می دهد:-
name
شامل نام آژانس ترانزیت است. -
phone
حاوی شماره تلفن آژانس حمل و نقل است. -
url
شامل URL برای آژانس ترانزیت است.
توجه : اگر به جای استفاده از شیء
DirectionsRenderer
دستورالعمل های حمل و نقل را به صورت دستی ارائه می دهید ، باید نام ها و URL های آژانس های ترانزیتی را که خدمات نتایج سفر را ارائه می دهند ، نمایش دهید. -
-
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
و 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 ، به مشتریان 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;