سیستم موقعیت یاب جهانی HTML5
سیستم موقعیت یاب HTML5 برای پیدا کردن موقعیت یک کاربر استفاده می شود.
سیستم موقعیت یاب جهانی HTMl5
بوسیله سیستم موقعیت یاب جهانی Html5 می توانید مختصات و موقعیت جغرافیایی یک کاربر را پیدا کرده و به وی نمایش دهید. این سیستم از اطلاات ماهواره ها و ISP ای که به آن متصل هستید، برای اطلاع از موقعیت شما استفاده می کند.
از آنجایی که موقعیت یابی می تواند حریم خصوصی کاربر را تحت تاثیر قرار دهد، موقعیت وی تا زمانی که خودش تایید نکند، در اختیار برنامه قرار نخواهد گرفت.
پشتیبانی مرورگرها
مرورگرهای Internet Explorer 9+, Firefox, Opera, Chrome, Safari سیستم موقعیت یاب HTML5 را پشتیبانی می کنند.
توجه: سیستم موقعیت یاب HTML5 در دستگاه هایی که دارای GPS هستند (مانند iPhone) دقیق تر کار می کند.
اطلاع از موقعیت کنونی کاربر
از متد ()getCurrentPosition برای اطلاع از موقعیت کنونی کاربر استفاده می شود.
مثال زیر یک کد ساده موقعیت یابی را نشان می دهد که بوسیله آن عرض و طول جغرافیایی مکان کاربر را بر روی صفحه، نمایش می دهد:
مثال (سیستم موقعیت یاب جهانی HTML5)
var x=document.getElementById("demo");
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition);
}
else{x.innerHTML="Geolocation is not supported by this browser.";}
}
function showPosition(position)
{
x.innerHTML="Latitude: " + position.coords.latitude +
"<br>Longitude: " + position.coords.longitude;
}
</script>
توضیح مثال:
- در مرحله اول چک شده که آیا مرورگر از سیستم موقعیت یاب در HTML پشتیبانی می کند یا خیر و در صورت لزوم کد های مناسب اجرا می شود.
- اگر مرورگر از این سیستم پشتیبانی کند، متد ()getCurrentPosition اجرا شده و در غیر این صورت یک پیام هشدار مبنی بر عدم پشتیبانی مرورگر صادر می شود.
- اگر متد ()getCurrentPosition با موفقیت اجرا شود، مختصات نقطه قرارگیری کاربر را بوسیله یک پارامتر به تابع ()ShowPosition برمی گرداند.
- تابع ()ShowPosition طول و عرض جغرافیایی کاربر را در خروجی نمایش می دهد.
مثال فوق کد ساده یک عملیات موقعیت یابی بدون امکان خطا یابی بود و در بخش بعد نحوه خطا یابی در این سیستم را آموزش می دهیم.
مدیریت خطاها و عدم جوابگویی سیستم
ممکن است در فرایند موقعیت یابی، خطا هایی رخ دهد. از پارامتر دوم متد ()getCurrentPosition می توان برای مدیریت خطا های احتمالی استفاده کرد.
این پارامتر یک تابع را تعیین می کند تا در صورت بروز خطا، اجرا شده و پیام لازم را به کاربر نمایش دهد:
مثال (سیستم موقعیت یاب جهانی HTML5)
{
switch(error.code)
{
case error.PERMISSION_DENIED:
x.innerHTML="User denied the request for Geolocation."
break;
case error.POSITION_UNAVAILABLE:
x.innerHTML="Location information is unavailable."
break;
case error.TIMEOUT:
x.innerHTML="The request to get user location timed out."
break;
case error.UNKNOWN_ERROR:
x.innerHTML="An unknown error occurred."
break;
}
}
توضیح کد:
- PERMISSION_DENIED: در این حالت کاربر اجازه دسترسی به موقعیت یابی را نداده است.
- POSITION_UNAVAILABLE: در این حالت یافتن موقعیت صحیح کاربر به علت مشکلات فنی ممکن نیست.
- TIMEOUT: در این حالت مدت زمان لازم برای اجرای درخواست تمام شده است.
- UNKNOWN_ERROR: خطای ایجاد شده نا مفهوم است.
نمایش موقعیت کاربر بر روی یک نقشه
برای نمایش موقعیت کاربر بر روی یک نقشه، به یک سرویس دهنده مانند Google Maps نیاز دارید:
مثال (سیستم موقعیت یاب جهانی HTML5)
{
var latlon=position.coords.latitude+","+position.coords.longitude;
var img_url="http://maps.googleapis.com/maps/api/staticmap?center="
+latlon+"&zoom=14&size=400x300&sensor=false";
document.getElementById("mapholder").innerHTML="<img src='"+img_url+"'>";
}
در مثال بالا، از طول و عرض جغرافیایی برای نمایش موقعیت کاربر در Google Maps استفاده شده است. (از یک عکس استاتیک استفاده شده است)
Google Map Script
در این مثال، چگونگی نمایش یک نقشه تعاملی تر با ابزارهای zoom ،drag و marker نشان داده شده است.
داده هایی که متد ()getCurrentPosition برمی گرداند
اگر متد ()getCurrentPosition با موفقیت اجرا شود، یک شیء برمی گرداند. خصوصیت های latitude ,longitude و accuracy همیشه برگردانده می شوند. در جدول زیر دیگر خصوصیت های این شیء آورده شده است:
خصوصیت | توضیحات |
---|---|
coords.latitude |
عرض جغرافیایی |
coords.longitude |
طول جغرافیایی |
coords.accuracy |
دقت و درستی مکان کاربر |
coords.altitude | The altitude in meters above the mean sea level |
coords.altitudeAccuracy | The altitude accuracy of position |
coords.heading | The heading as degrees clockwise from North |
coords.speed | The speed in meters per second |
timestamp | The date/time of the response |
متدهای دیگر شیء geolocation
متد ()watchPosition: مکان فعلی کاربر را برمی گرداند و در صورت جابه جا شدن کاربر، داده را تازه سازی می کند. (مانند دستگاه GPS در یک خودرو)
متد ()clearWatch: باعث توقف متد ()watchPosition می شود.
در مثال زیر، متد ()watchPosition، نشان داده شده است. برای تست این مثال، به یک دستگاه GPS دقیق نیاز دارید: (مانند iPhone)
مثال (سیستم موقعیت یاب جهانی HTML5)
var x=document.getElementById("demo");
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.watchPosition(showPosition);
}
else{x.innerHTML="Geolocation is not supported by this browser.";}
}
function showPosition(position)
{
x.innerHTML="Latitude: " + position.coords.latitude +
"<br>Longitude: " + position.coords.longitude;
}
</script>
- نوشته شده توسط امیر پهلوان صادق
- بازدید: 26354
دیدگاهها
با سلام.ممنون بابت زحماتتون.یه انتقادی دارم از سایتتون.اول اینکه سوالات رو جواب نمیدید!!!
دوم اینکه این قسمت از آموزشتون تو قسمت"خودتان امتحان کنید" کار نمیکنه.چون باید سایتتون گواهی ssl بگیره.
امانکته ای که نهایتا بنده سوال دارم اینه که از از سال 2016 گوگل برای نمایش نقشه کابران رو ملزم کرده تا key رو از گوگل دریافت کنن ولی توی سایت اشاره ای به این موضوع نشده
سلام. من اینجا یک دیدگاه نوشتم، ولی نیستش!
پرسیده بودم که چطور میشه نقشه رو به کاربر نمایش داد، تا کاربر نقطه ای از نقشه رو انتخاب کنه، و مختصات اون نقطه رو بتونیم ذخیره کنیم؟
برای سایت مشاور املاک میخوام. میخوام اعضای سایتم، مکان ملک خودشون رو روی نقشه مشخص کنن و مختصات اون نقطه، در دیتابیس سایتم ذخیره بشه.
سلام
لطفا بفرمایید که مدیریت محتوا شما چیست؟
و یا تحت چه زبانی نوشته شده
سلام. مرسی که جواب میدید. از مدیریت محتوا و امکانات آماده مثل ورد پرس استفاده نشده، طراحی و برنامه نویسیش کار خودمه. یک سایت مشاور املاکه، که مثل سایر سایت ها در این حوزه، امکان ثبت و جستجوی املاک رو داره. با ای.اس.پی دات نت، و سی شارپ طراحی شده.
با سپاس از پیگیری شما.
سلام. لطفا جواب بدید.
با سلام.
تا جایی که من اطلاع دارم، گوگل یک api گوگلمپ داره که تو اکثر سایتها از اون استفاده میشه.
تو مختصات نقشه هم تا جایی که اطلاع دارم دو عدد هست به اسم لت و لان که عرض و طول جغرافیایی رو مشخص میکنه. هر نقطهای در جهان دارای این دو عدد هست.
تو گوگل api گوگلمپ رو سرچ کنید، مطالب مرتبط گیر خواهید آورد.
مرسی که جواب دادید. بله متوجه هستم ، اما من هرچی پیدا میکنم درمورد دادن اون دو نقطه به نقشه و در نتیجه نمایش اون مکان روی نقشه است. ولی من دقیقا عکس این کارو میخوام انجام بدم. یعنی نقطه رو کاربر مشخص کنه و نقشه به من طول و عرض رو بده!
یه سری هم به این سایت بزنید:
http://www.armangeomatics.ir/GeoUTM.aspx
خواهش میکنم.
فکر میکنم تو گوگل مپ باید این قابلیت وجود داشته باشه. به این لینک یه سر بزن:
https://support.google.com/maps/answer/18539?hl=en
ببین چیزی پیدا میکنی یا نه.
آقا مهرداد دمت گرم داداش. ولی متأسفانه این لینک ها کمکی نکرد. کلا درمورد مسائل دیگه ای بودن! شایدم هنوز متوجه منظور من نشدید :-(
خواهش میکنم. من در این زمینه کار نکردم.
مواردی که گفتم بیشتر شنیدههایی هست که از دوستان یاد گرفتم.
تا جایی که میدونم شما باید دنبال لت و لان توی نقشه باشید. این عبارت رو به انگلیسی توی گوگل سرچ کنید، احتمال داره مطالبی گیر بیارید.
باز هم عذرخواهی بابت اینکه بیشتر از این نتونستم کمکی کنم.
موفق باشید.
سلام
اگه جواب سوالمو بدید ممنون میشم.. راهی هست که به صورت خودکار فقط نام شهر کاربر نمایش داده بشه تو سایت به جای طول و عرض جغرافیایی یا جای نقشه؟؟؟
سلام . به نظر می رسد آنچه که شما نیاز دارید، google maps geocoder باشد.
در لینک زیر همین سوال شما پرسیده شده است و جوابهایی نیز برای آن آورده شده که می توانید برای اطلاعات بیشتر به آن رجوع کنید:
stackoverflow.com/questions/6797569/get-city-name-using-geolocation
در لینک بالا یک کد برای برگرداندن نام شهر آورده شده است اما این کد کار نمی کند زیرا که گوگل استفاده از google geocoder را برای کاربران ایرانی تحریم کرده است.
پس سایتهایی مثل دیوار چطوری شهر کاربر را به صورت خودکار در زمان ورود به سایت نشون میدن و اطلاعات مربوط به همون شهر رو بالا میارن؟
خدمت شما عرض کنم که اگر با یک مرورگر برای اولین بار وارد سایت دیوار شوید، این سایت از ابتدا شهر شما را نمی تواند تشخیص دهد. بعد که شما روی یک شهر کلیک می کنید، نام آن در یک کوکی ذخیره شده و در دفعات بعدی که وارد این سایت می شوید نام شهر کلیک شده نمایش داده می شود. بنابراین اگر شهر شما شیراز باشد، ولی روی شهر اصفهان کلیک کنید، در دفعات بعدی شهر اصفهان در سایت دیوار نمایش داده می شود.این نشانی است برای استفاده از کوکی ها.
با استفاده از وب سرویس زیر می توانید نام کشور بازدید کننده و شهر او را به دست بیاورید اما مشکلی که همیشه وجود دارد این است که isp ها مکان مشتریان خود را پنهان می کنند، بنا براین در وب سرویس لینک شده ی زیر نام شهر شاید به درستی نمایش داده نشود.
www.geoplugin.com/examples
سلام خسته نباشید
امکان داره راهنمایی کنید اگه بخواهیم به جای طول و عرض جغرافیایی یا نمایش نقشه، فقط نام شهر محل سکونت کاربر را در سایت نشان دهیم چیکار باید انجام بدیم؟ مرسی