TextView tvLat = (TextView) v.findViewById(R.id.tv_lat);
TextView tvLng = (TextView) v.findViewById(R.id.tv_lng);
TextView tvSnippet = (TextView) v.findViewById(R.id.tv_snippet);
LatLng ll= marker.getPosition();
tvLocality.setText(marker.getTitle());
tvLat.setText("عرض جغرافیایی: “+ ll.latitude);
tvLng.setText("طول جغرافیایی : “+ ll.longitude);
tvSnippet.setText(marker.getSnippet());
}});
این سیستم با بهره گرفتن از دریافت اطلاعات از نقشه می تواند طول و عرض جغرافیایی و نام شهر را به نمایش در آورد. این قسمت بر روی نقشه های گوگل در صفحه اصلی پیاده سازی شده و با انتخاب این گزینه از منوی برنامه این امکان بر روی صفحه به نمایش در خواهد آمد و تنها با دریافت اطلاعات مورد نیاز از ماهواره موقعیت یاب، می تواند اطلاعات در خواستی را جواب گو باشد.
Address add= list.get(0);
MainActivity.this.setMarker(add.getLocality(), add.getCountryName(), ll.latitude,ll.longitude);
۳-۲-۳-مسیر یابی
یکی دیگر از زیر مجموعه های بخش سیستم پایه می باشد که از منوی بالای برنامه قابل دسترس است. این امکان به کاربر کمک می کند تا سریعترین راه را برای پیمودن به مقصد خود پیدا کند. این امکان نیازمند بکارگیری نقشه گوگل و اینترنت برای ارسال اطلاعات مبدا و مقصد مشخص شده توسط کاربر که شامل طول و عرض های جغرافیایی است، به پایگاه داده شرکت گوگل می باشد. این سیستم نیز بر روی نقشه های گوگل پیاده سازی شده تا بتوان با انتخاب مکان دلخواه، طول و عرض جغرافیایی آن مکان به راحتی قابل دسترس شود، همچنین با انتخاب این امکان، در بالای صفحه برنامه دو گزینه نمایش داده می شود تا کاربر بتواند نوع دلخواه سفر خود به مقصد را با انتخاب یکی از گزینه ها تعیین کند. این گزینه ها شامل رانندگی و پیاده می باشد که با توجه به نحوه انتخاب کاربر نسبت به پیاده بودن و یا رانندگی اطلاعات لازم از کنسول گوگل برگردانده می شود. این اطلاعات شامل یک مسیر مشخص بر روی نقشه می باشد که توسط الگوریتم های مسیر یابی بدست آمده اند.
private String getDirectionsUrl(LatLng origin,LatLng dest){
// Origin of route
String str_origin = “origin="+origin.latitude+","+origin.longitude;
// Destination of route
String str_dest = “destination="+dest.latitude+","+dest.longitude;
String mode = “mode=driving";
If (rbDriving.isChecked() ) {
mode = “mode=driving” ;
mMode = 0 ;}
else if (rbWalking.isChecked() ) {
mode = “mode=walking” ;
mMode = 1 ; }
// Building the parameters to the web service
String parameters = str_origin+"&"+str_dest+"&"+sensor+"&"+mode;
// Building the url to the web service
Send to String url = “https://maps.googleapis.com/maps/api/directions/"+output+"?”
+parameters;
امروزه این مسیر یابی ها بر اساس ترافیک شهری آنلاین، کوتاه ترین مسیر، سریعترین مسیر و یا حتی کم هزینه ترین مسیر مشخص می شوند، اما با توجه به اینکه در ایران بیشتر این امکانات به دلیل نبود زیر ساخت های لازم قابل استفاده نمی باشند از این رو در این پروژه از الگوریتم های سریع ترین مسیر برای رسیدن به مقصد استفاده شده است. کاربر نیز می تواند با توجه به نوع حرکتی خود مبنی بر پیاده روی و یا رانندگی این مسیر را دریافت کند و با توجه به آن خود را به مقصد برساند.
زمانی که شرکت گوگل سیستم نقشه خود را راه اندازی کرد، در این سیستم نوع خیابان ها و گذرگاهها، محدودیت های سرعت، مسیر های پیاده روی، مسیر های دو طرفه و بسیاری از واقعیت ها به این نقشه اضافه شد و از این پس نیز هر خیابان جدیدی بخواهد به این سیستم اضافه شود باید این موارد را به عنوان مشخصات خیابان در آن ذکر کرد تا زمانی که کاربری از این سیستم شرکت گوگل استفاده می کند بتواند بهترین سفر و کم خطرترین سفر را برای رسیدن به مقصد خود داشته باشد. بنابراین چون در این پروژه هدف اصلی چیزی دیگر بود تنها قسمتی از این امکانات به این برنامه اضافه شد.
بعد از ارسال اطلاعات به کنسول گوگل و دریافت آن ها این اطلاعات بررسی شده و بر روی نقشه مشخص می شوند، اگر حالت رانندگی برای این مسیر یابی انتخاب شده باشد مسیر حرکتی به صورت یک خط قرمز رنگ بر روی خیابان ها مشخص شده و اگر حالت پیاده روی انتخاب شده باشد، مسیر مشخص شده به رنگ سبز خواهد بود.
if(mMode==MODE_DRIVING)
lineOptions.color(Color.RED);
else if(mMode==MODE_WALKING)
lineOptions.color(Color.GREEN);
۳-۲-۴-ثبت و حذف پارک
مهمترین قسمت در این پروژه می باشد به این صورت که در این قسمت سیستم باید نوع پیاده بودن و یا سواره بودن راننده را تشخیص داده و سپس اطلاعات مربوط به پارکینگ را به پایگاه داده طراحی شده برای برنامه منتقل کند.
زمانی که برنامه اجرا می شود برنامه با دریافت اطلاعات ماهواره و بدست آوردن سرعت متوسط مسافت طی شده و واریانس از روی رفتار کاربر بعد از ۲۰ ثانیه آن ها را بررسی کرده و به سیستم فازی منتقل می کند. (زمان ۲۰ ثانیه صرفا از روی رفتار کاربر در زمان پیاده شدن و یا سوار شدن بر خودرو در نظر گرفته شده و هیچ ملاک مشخصی برای انتخاب آن وجود ندارد. با توجه به مقاله]۲۶[ که در این مقاله طول قدم های کاربر را برای تشخیص پیاده بودن وی ۴۰ میلی ثانیه در نظر گرفته است.) سیستم با بهره گرفتن از موتور استنتاج فازی که در آن بکار رفته حالت های کاربر را هر ۲۰ ثانیه زیر نظر می گیرد. زمانی که حالت کاربر از سواره به پیاده تغییر کرد سیستم متوجه می شود که شخص در پارکینگ، پارک کرده و اطلاعات طول و عرض جغرافیایی که از ماهواره دریافت کرده است را همراه با شناسه برنامه به پایگاه داده منتقل می کند و زمانی که از حالت پیاده به سواره تغییر پیدا کرد سیستم متوجه می شود که شخص سوار بر خودرو شده، بنابراین محل ثبت شده در پایگاه داده را با بهره گرفتن از شناسه برنامه، حذف می کند.
این قسمت نیز بر روی سیستم پایه برنامه ریزی شده و همراه با راه اندازی برنامه، شروع به کار می کند و حرکات کاربر را زیر نظر می گیرد. قبل از آنکه سیستم فازی این بخش راه اندازی شود، برای بدست آوردن قوانین فازی، تست هایی انجام شد که سه مولفه سرعت متوسط، مسافت طی شده و واریانس در هر تست مد نظر قرار گرفت و خروجی مناسب آن تعریف شد. این خروجی ها پیاده بودن و یا سواره بودن را با توجه به این سه مولفه در تست تعیین می کنند که در ادامه به آن ها خواهیم پرداخت.
۳-۲-۴-۱-دریافت اطلاعات
زمانی که برنامه اجرا می شود، سیستم بلافاصله به سیگنال های دریافتی از ماهواره موقعیت یاب جهانی متصل شده و همچنین سیستم؛ سرعت کاربر را با بهره گرفتن از اطلاعات دریافتی از ماهواره به وی نمایش میدهد، این سرعت بر حسب متر بر ثانیه می باشد و با کمترین میزان خطا در زیر صفحه برنامه نمایش داده می شود.
public void onConnected(Bundle connectionHint) {
LocationRequest request = LocationRequest.create();
request.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
پایان نامه برای دریافت درجه کارشناسی ارشد در رشته مکاترونیکسیستم پارکینگ هوشمند کنار خیابانی با استفاده از ارتباطات بین خودرویی تحت موبایل- قسمت ۱۲