براي يافتن موقعيت كاربرازHTML Geolocation API استفاده ميشود .از آنجائيكه اين مي تواند حريم خصوصي كاربر را بخطر بياندازد، موقعيت در دسترس نيست مگر اينكه كاربر آنرا تائيد كند.
توجه ـ موقعيت جغرافيائي براي دستگاهائي كه دارايGPS هستند ، دقيق ترين است .
Geolocation APIتوسط همه مرورگر ها پشتيباني ميشوند :
Yes | Yes | Yes | Yes | Yes |
توجه ـGeolocation API فقط در زمينه هاي امن مانندHTTPS كارميكند .اگر سايت شما روي يك منبع غيرايمن مانندHTTP ميزباني شود، درخواست ها براي دريافت موقعيت مكاني كاربران ديگر كار نمي كند.
متدgetCurrentPosition( ) براي بدست آوردن موقعيت كاربر مورد استفاده قرار ميگيرد.
مثال ـ در اين مثال طول وعرض موقعيت جغرافيائي كاربر را نشان ميدهد.
<script> const 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 >
تشريح مثال:
مثال بالا يك اسكريپت بسيار ابتدائي است، آن بدون رسيدگي به خطاهاست.
پارامتر دوم متدgetCurrentPosition( ) براي رسيدگي به خطاها استفاده ميشود .تابعي را مشخص ميكند كه اگر موقعيت كاربر را بدست نياورد، آن تابع اجرا شود.
مثال ـ خطايابي موقعيت كاربر
function showError(error) {
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;
}
}
براي نمايش نتيجه در نقشه، بايد به يك سرويس نقشه مانندGoogle Mapd دسترسي داشته باشيد .
در مثال زير، طول وعرض جغرافيائي بازگشتي براي نشان دادن مكان در نقشه گوگل) با استفاده از يك تصويرثابت( استفاده ميگردد .
مثال ـ نمايش در نقشه
function showPosition(position) { let latlon = position.coords.latitude + "," + position.coords.longitude; let img_url = "https://maps.googleapis.com/maps/api/staticmap?center= "+latlon+"&zoom=14&size=400x300&sensor=false&key=YOUR_KEY"; document.getElementById("mapholder").innerHTML = "<img src='"+img_url+"'>"; }
در اين صفحه نحوه نمايش موقعيت كاربر بر روي نقشه نشان داده شده است .موقعيت جغرافيائي نيز براي اطلاعات مكاني بسيار مفيد ميباشد، مانند:
متدgetCurrentPosition( ) در صورت موفقيت شئي را برگشت ميدهد .
آن شئ شامل ويژگي هاي طول و عرض جغرافيائي و دقت ، كه هميشه برگشت ميشوند .ساير ويژگي ها در صورت وجود بازگردانده خواهند شد:
ويژگي | شــرح |
---|---|
coords.latitude | عرض جغرافيائي بصورت عدد اعشاري هميشه برگشت ميشود |
coords.longitude | طول جغرافيائي بصورت عدد اعشاري هميشه برگشت ميشود. |
coords.accuracy | دقت موقعيت هميشه برگشت ميشود. |
coords.altitude | ارتفاع برحسب متر بالاتراز سطح متوسط دريا درصورت وجود |
coords.altitudeAccuracy | دقت ارتفاع موقعيت ذر صورت وجود برگشت مي شود. |
coords.heading | عنوان به صورت درجه در جهت عقربه هاي ساعت ازشمال در صورت وجود |
coords.speed | سرعت برحسب متربرثانيه در صورت وجود. |
timestamp | تاريخ/زمان پاسخ در صورت وجود |
شئgeolocation همچنين داراي متدهاي مورد توجه ديگري مطابق زير دارد:
مثال زير متدwatchPosition( ) را نشان ميدهد .براي آزمايش اين مورد به يك دستگاهGPS دقيق نياز داريد ، مانند گوشي هوشمند.
<script> const 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 >