هم زمان با توسعه استاندارد HTML 5، گوشی های هوشمند و تبلت مدرن نیز در حال گسترش هستند. یکی از ویژگی های این گجت ها این است که تقریباً تمامی آن ها مجهز به GPS (و در برخی موارد GLONASS) جهت یافتن مکان دستگاه، و کاربر، هستند. به همین دلیل، یکی از کاربردی ترین ویژگی هایی که در HTML 5 معرفی شده، تشخیص موقعیت جغرافیایی است که کاربرد آن را می توان در سایت هایی مانند Google Maps و Foursquare دید. در این مقاله روش یافتن موقعیت جغرافیایی کاربر به کمک HTML 5 مورد بررسی قرار می گیرد.
همان گونه که می دانید، مختصات هر نقطه ای بر روی زمین را می توان با طول جغرافیایی و عرض جغرافیایی آن نقطه نشان داد. از آنجا که GPS تنها موقعیت کاربر را پیدا می کند، خروجی GPS تنها شامل همین دو عدد است و به کمک HTML 5 نیز همین دو عدد را به دست می آوریم. از آنجا این اعداد به تنهایی کاربرد خاصی ندارند، در قسمت بعدی مقاله به روش تبدیل این اعداد به نقشه یا نام مکان خواهیم پرداخت. با این وجود، پایه تمام امکانات همین طول و عرض جغرافیایی است.
برای دستیابی به موقعیت کاربر در جاوااسکریپت از شئ navigator.geolocation استفاده می شود. برای اطمینان از این که مرورگر کاربر از Geolocation پشتیبانی می کند، می توانید کد زیر را به کار ببرید:
if (navigator.geolocation)
{
//دریافت مختصات کاربر
}
else
{
alert ("مرورگر شما از مختصات جغرافیایی پشتیبانی نمی کند. لطفاً مرورگر را به روز نمایید.");
}
فهرستی از مرورگرهایی که از geolocation پشتیبانی می کنند را می توانید در اینجا بیابید. به طور کلی، بیشتر مرورگرهای جدید از این ویژگی پشتیبانی می کنند.
در صورتی که مرورگر از geolocation پشتیبانی کند، با استفاده از تابع geolocation.getCurrentPosition می توانید به مختصات کاربر دست پیدا کنید. برای استفاده از این تابع باید تابع دیگری را به آن بفرستید که یک ورودی بگیرد. پس از این که مختصات کاربر دریافت شد، getCurrentPosition مختصات را به آن تابع می فرستد. به عنوان مثال، کد زیر مختصات کاربر را دریافت کرده و نمایش می دهد:
function showGeolocation (position) { // position.coords.latitude = عرض جغرافیایی کاربر // position.coords.longitude = طول جغرافیایی کاربر alert (position.coords.latitude + ", " + position.coords.longitude); } if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showGeolocation); } else { alert ("مرورگر شما از مختصات جغرافیایی پشتیبانی نمی کند. لطفاً مرورگر را به روز نمایید."); }
برای آزمایش این ویژگی در مرورگر خودتان می توانید روی این دکمه کلیک نمایید:
توجه داشته باشید که جهت احترام به حریم خصوصی کاربر، هر سایتی که بخواهد از مختصات کاربر استفاده کند، باید دستکم برای اولین بار از کاربر اجازه این کار را بگیرد. البته مرورگر به طور خودکار این کار را انجام می دهد و در صورتی که کاربر اجازه نداد، مختصات را در اختیار برنامه قرار نمی دهد و تابع مربوط به نمایش مختصات نیز فراخوانی نمی شود.
مسئله دیگری که وجود دارد، این است که با وجود گسترش تبلت ها، گوشی های هوشمند و دیگر دستگاه های مجهز به GPS، هنوز هم دستگاه های بسیاری (مانند رایانه های شخصی و لپتاپ ها) هستند که می توانند از سایت شما بازدید کنند، در حالی که GPS ندارند. در این گونه مواقع، با استفاده از موارد مانند IP و گاهی شبکه های Wifi، رایانه موقعیت جغرافیایی اش را تخمین می زند، ولی خطای این روش بسیار بالا است (در حدّ چندین کیلومتر). در این مواقع، با استفاده از این روش می توانید شهری که کاربر در آن قرار دارد را بیابید. (البته ممکن است در مورد شهرهای کوچک و روستاها، به دلیل خطای بالا، نتیجه حتی در این حد نیز قابل اعتماد نباشد!)
احتمالاً برای شما این پرسش پیش آمده است که داشتن طول و عرض جغرافیایی کاربر به شکل 2 عدد خام چه کاربردی می تواند داشته باشد. پاسخ این است که با کمک APIهای موجود شما می توانید نام محل کنونی کاربر (مثل تهران – خیابان کارگر شمالی) را بیابید، محل کاربر را روی نقشه علامت بزنید و … در این زمینه منتظر مقالات بعدی این سری باشید.
شما چه کاربردی را برای مختصات جغرافیایی کاربر پیشنهاد می دهید؟
بسیار جالب بود
با تشکر
جالب بود. یه نکتهای. http://htmlfive.appspot.com/static/whereami.html موقعیت ما رو میگه ولی بر اساس آیپی این کار رو انجام نمیده چون با فیلترشکن هم رفتم آدرس رو با اختلاف ۱۰ – ۲۰ متر میگه. میتونی دقیقتر توضیح بدی که چجوری اینکار رو انجام میده؟
این درست مثل گوگل مپز موبایل عمل میکنه. مثلاً در مورد من، مک آدرس شبکهی وایرلسی که بهش وصل هستم و نام وایرلس رو هم داشت ارسال میکرد…
خوب بود اما چه طوری این 2 عدد رو راحتر از طریق اینترنت پیدا کنیم