معرفی
HTML Geolocation API برای تعیین موقعیت یک کاربر استفاده می شود. تکنیک های زیادی برای تعیین مکان کاربر استفاده می شود. در یک مرورگر وب، آدرس WIFI یا IP برای شناسایی مکان و در مرورگرهای مبتنی بر موبایل از تکنیک های WIFI، GPS یا مثلث سازی برای شناسایی مکان استفاده می شود. Geolocation API از هر یک از این تکنیک ها استفاده می کند. Geolocation API با پذیرش اجازه کاربر قبل از ارسال اطلاعات موقعیت مکانی به هر وب سایت، از حریم خصوصی کاربر محافظت می کند.
در این مقاله یاد می گیریم که چگونه مکان کاربر را شناسایی کرده و آن را روی نقشه گوگل نشان دهیم.
پشتیبانی مرورگر
جدول زیر اولین نسخه مرورگر را نشان می دهد که از موقعیت جغرافیایی پشتیبانی می کند.
ابتدا یک صفحه وب ایجاد می کنیم و کد زیر را در آن صفحه قرار می دهیم.
کد اچ تی ام ال
- <body>
- <dividdivid="div1"> <span>************HTML5 Geolocation*************</span> </div>
- <div>
- <inputtypeinputtype="button" id="btn" value="Show My Location" onclick="loadScript()" /> </div>
- <dividdivid="map">
- </div>
- </body>
اسکریپت
- <script>
- $(document).ready(function()
- {
- $("#btn").click(function()
- {
- if (navigator.geolocation)
- {
- varGeo_Options = {
- enableHighAccuracy: false,
- timeout: Infinity,
- maximumAge: 0
- }
- navigator.geolocation.getCurrentPosition(Success, Show_Error, Geo_Options)
- }
- else
- {
- alert("OOPS! Your Browser Doesn't Support GeoLocation \n" + "Please Update Your Browser")
- }
-
- function Success(position)
- {
- alert(" Show My Location \n" + "Latitude is " + position.coords.latitude + "\n Longitude is " + position.coords.longitude + "\n Accuracy is " + position.coords.accuracy + "\n Altitude is " + position.coords.altitude + "\n Altitude Accuracy is " + position.coords.altitudeAccuracy);
- varmapProp = {
- center: newgoogle.maps.LatLng(position.coords.latitude, position.coords.longitude),
- zoom: 13,
- mapTypeId: google.maps.MapTypeId.ROADMAP
- }
- var marker = newgoogle.maps.Marker(
- {
- position: newgoogle.maps.LatLng(position.coords.latitude, position.coords.longitude),
- title: 'Hello ! I am Here!'
- });
- var map = newgoogle.maps.Map(document.getElementById("map"), mapProp);
- marker.setMap(map);
- }
- functionShow_Error(error)
- {
- switch (error.code)
- {
- caseerror.PERMISSION_DENIED: alert("User denied the request");
- break;
- caseerror.POSITION_UNAVAILABLE: alert("Location information Not available.");
- break;
- caseerror.TIMEOUT: alert("Request time out");
- break;
- caseerror.UNKNOWN_ERROR: alert("Unknown error ");
- break;
- }
- };
- })
- });
- </script>
حالا اسکریپت را به چند قسمت تقسیم می کنیم و هر قسمت را جداگانه می خوانیم.
بررسی سازگاری مرورگر
- if (navigator.geolocation)
- {
-
- }
- else
- {
- alert("OOPS! Your Browser Doesn't Support GeoLocation \n" + "Please Update Your Browser")
- }
ویژگی موقعیت جغرافیایی شی ناوبر برای بررسی سازگاری مرورگرها برای API مکان جغرافیایی استفاده می شود.
موقعیت مکانی کاربر را دریافت کنید
- navigator.geolocation.getCurrentPosition(Success, Show_Error, Geo_Options)
متد getCurrentPosition شی navigator.geolocation مکان فعلی کاربر را دریافت می کند. این روش سه پارامتر (روش پاسخ به تماس موفقیت آمیز، روش پاسخ به تماس خطا و گزینه موقعیت) را می گیرد. شرح هر پارامتر در زیر توضیح داده شده است.
روش بازگشت به تماس موفقیت آمیز
در کد بالا زمانی که کاربر درخواست اشتراکگذاری را بپذیرد، «موفقیت» نامیده میشود. متد callback شامل یک شی موقعیت است. این شی موقعیت حاوی اطلاعاتی در مورد مکان کاربر است. این پارامتر موقعیت حاوی اطلاعات زیر است:
- مهر زمان: نشان دهنده زمانی است که در آن مکان گرفته شده است.
- شی Coords: حاوی اطلاعاتی درباره مکان است. شی cords حاوی اطلاعات زیر در مورد محل شی است.
ویژگی |
شرح |
طول جغرافیایی عرض جغرافیایی |
مختصات جغرافیایی در درجه اعشار |
دقت |
سطح دقت مختصات |
سرعت |
سرعت نسبی را بر حسب متر بر ثانیه نشان می دهد |
سرفصل |
اطلاعات عنوان 360 درجه را ارائه می دهد |
ارتفاع |
ارتفاع موقعیت از سطح دریا بر حسب متر |
دقت ارتفاع |
دقت مقدار نگرش واقعی به دست آمده در متر. بزرگ عدد کوچکتر دقت است |
هنگام فراخوانی روش موفقیت، اطلاعات مربوط به مکان کاربر را نشان می دهد،
- function Success(position) {
-
- alert(" Show My Location \n" +
- "Latitude is " + position.coords.latitude +
- "\n Longitude is " + position.coords.longitude +
- "\n Accuracy is " + position.coords.accuracy +
- "\n Altitude is " + position.coords.altitude +
- "\n Altitude Accuracy is " + position.coords.altitudeAccuracy);
- }
خروجی
روش برگشت به تماس خطا
- functionShow_Error(error)
- {
- switch (error.code)
- {
- caseerror.PERMISSION_DENIED: alert("User denied the request");
- break;
- caseerror.POSITION_UNAVAILABLE: alert("Location information Not available.");
- break;
- caseerror.TIMEOUT: alert("Request time out");
- break;
- caseerror.UNKNOWN_ERROR: alert("Unknown error ");
- break;
- }
- };
روش برگشت خطا زمانی فراخوانی می شود که خطای موقعیت رخ دهد. این خطا ممکن است به هر دلیلی رخ داده باشد ( درخواست رد شده توسط کاربر، زمان درخواست، در دسترس نبودن موقعیت یا به هر دلیل دیگری).
گزینه موقعیت
پارامتر گزینه موقعیت برخی از گزینه ها را در طول بازیابی اطلاعات مکان ارائه می دهد. این پارامتر شامل گزینه های زیر است.
- varGeo_Options = {
- enableHighAccuracy: false,
- timeout: Infinity,
- maximumAge: 0
- }
گزینه |
شرح |
فعال کردن دقت بالا |
اگر مقدار درست باشد، مرورگر موقعیت دقیق تری را ارائه می دهد. اما این روند را کند می کند. مقدار پیش فرض غلط است |
تایم اوت |
حداکثر زمان بر حسب میلی ثانیه که یک عامل کاربر می تواند برای بازیابی مکان کاربر صرف کند. |
حداکثر سن |
نشاندهنده مدت زمانی (میلیثانیه) است که عامل کاربر میتواند با استفاده از دادههای مکان ذخیرهشده قبل از تلاش برای دستیابی به دادههای مکان جدید طول بکشد. صفر به این معنی است که عامل کاربر از مکان ذخیره شده استفاده نمی کند و بی نهایت به این معنی است که عامل کاربر از مکان ذخیره شده برای مدت طولانی استفاده می کند. |
نشان دادن موقعیت مکانی کاربر در Google Maps.
- varmapProp = {
- center: newgoogle.maps.LatLng(position.coords.latitude, position.coords.longitude),
- zoom: 13,
- mapTypeId: google.maps.MapTypeId.ROADMAP
- }
- var marker = newgoogle.maps.Marker(
- {
- position: newgoogle.maps.LatLng(position.coords.latitude, position.coords.longitude),
- title: 'Hello ! I am Here!'
- });
- var map = newgoogle.maps.Map(document.getElementById("map"), mapProp);
- marker.setMap(map);
با استفاده از کد بالا، یک شیء نقشه گوگل ایجاد می کنیم و مرکز نقشه های گوگل را با استفاده از طول و عرض جغرافیایی بازیابی شده از API موقعیت جغرافیایی تعریف می کنیم. ما همچنین یک نشانگر ایجاد می کنیم و خاصیت نشانگر را حفظ می کنیم و در نهایت این نشانگر را به شی نقشه اختصاص می دهیم.
بنابراین وقتی این برنامه را در یک مرورگر وب اجرا می کنیم، مکان فعلی مکان فعلی را در نقشه گوگل دریافت می کنیم.
کد کامل
- <htmlxmlns="http://www.w3.org/1999/xhtml">
- <headrunat="server">
- <title></title>
- <scriptsrc="jquery-ui-1.11.4.custom/jquery-ui-1.11.4.custom/external/jquery/jquery.js">
- </script>
- <!--Goolge API-->
- <scriptsrc="http://maps.googleapis.com/maps/api/js">
- </script>
- </head>
- <script>
- $(document).ready(function()
- {
- $("#btn").click(function()
- {
- if (navigator.geolocation)
- {
- varGeo_Options = {
- enableHighAccuracy: false,
- timeout: Infinity,
- maximumAge: 0
- }
- navigator.geolocation.getCurrentPosition(Success, Show_Error, Geo_Options)
- }
- else
- {
- alert("OOPS! Your Browser Doesn't Support GeoLocation \n" + "Please Update Your Browser")
- }
-
- function Success(position)
- {
- alert(" Show My Location \n" + "Latitude is " + position.coords.latitude + "\n Longitude is " + position.coords.longitude + "\n Accuracy is " + position.coords.accuracy + "\n Altitude is " + position.coords.altitude + "\n Altitude Accuracy is " + position.coords.altitudeAccuracy);
- varmapProp = {
- center: newgoogle.maps.LatLng(position.coords.latitude, position.coords.longitude),
- zoom: 13,
- mapTypeId: google.maps.MapTypeId.ROADMAP
- }
- var marker = newgoogle.maps.Marker(
- {
- position: newgoogle.maps.LatLng(position.coords.latitude, position.coords.longitude),
- title: 'Hello ! I am Here!'
- });
- var map = newgoogle.maps.Map(document.getElementById("map"), mapProp);
- marker.setMap(map);
- }
- functionShow_Error(error)
- {
- switch (error.code)
- {
- caseerror.PERMISSION_DENIED: alert("User denied the request");
- break;
- caseerror.POSITION_UNAVAILABLE: alert("Location information Not available.");
- break;
- caseerror.TIMEOUT: alert("Request time out");
- break;
- caseerror.UNKNOWN_ERROR: alert("Unknown error ");
- break;
- }
- };
- })
- });
- </script>
- <style>
- #div1 {
- background-color: coral;
- color: ButtonHighlight;
- font-size: 30px;
- height: 80px;
- width: 1000px;
- text-align: center;
- margin-left: 150px
- }
-
- #map {
- height: 700px;
- width: 1000px;
- text-align: center;
- margin-left: 150px;
- margin-top: 10px
- }
-
- #btn {
- color: chocolate;
- background-color: aquamarine;
- font-size: 26px;
- margin-left: 550px;
- margin-top: 10px
- }
- </style>
-
- <body>
- <divid="div1"> <span>************HTML5 Geolocation*************</span> </div>
- <div>
- <inputtype="button" id="btn" value="Show My Location" onclick="loadScript()" />
- </div>
- <divid="map">
- </div>
- </body>
-
- </html>
خلاصه
در این مقاله با HTML5 Geolocation آشنا شدیم.
با تشکر از خواندن مقاله