English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تحديد الموقع الجغرافي في HTML5

تحديد الموقع الجغرافي في HTML5 (Geolocation)用于تحديد موقع المستخدم.

تحديد موقع المستخدم

API تحديد الموقع الجغرافي في HTML5用于الحصول على موقع المستخدم.

نظرًا لأن هذه الميزة قد تتعارض مع خصوصية المستخدم، فإن معلومات موقع المستخدم غير متاحة إلا إذا وافق المستخدم.

دعم المتصفح

Internet Explorer 9+، Firefox، Chrome، Safari و Opera يدعمون تحديد الموقع الجغرافي (Geolocation).

ملاحظة: تحديد الموقع الجغرافي (Geolocation) أكثر دقة للهواتف الذكية التي تحتوي على GPS مثل iPhone.

HTML5 - استخدام تحديد الموقع الجغرافي

استخدم دالة getCurrentPosition() للحصول على موقع المستخدم.

المثال التالي هو مثال بسيط على تحديد الموقع الجغرافي يمكنه إرجاع خط العرض وخط الطول للمستخدم:

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>أساسيات التعليمات الالكترونية (oldtoolbag.com)</title> 
</head>
<body>
<p id="demo">انقر على الزر للحصول على إحداثيات موقعك الحالي (قد يستغرق وقتًا طويلاً للحصول على المعلومات):</p>
<button onclick="getLocation()">ضغطي هنا</button>
<script>
var x = document.getElementById("demo");
function getLocation()
{
    if (navigator.geolocation)
    {
        navigator.geolocation.getCurrentPosition(showPosition);
    }
    else
    {
        x.innerHTML="هذا المتصفح لا يدعم الحصول على الموقع الجغرافي.";
    }
}
function showPosition(position)
{
    x.innerHTML="العرض: " + position.coords.latitude + " ;" 
    "<br>الطول: " + position.coords.longitude;    
}
</script>
</body>
</html>
الاختبار لرؤية <‹/›

示例解析:

  • 检测是否支持地理定位

  • 如果支持,则运行 getCurrentPosition() 方法。如果不支持,则向用户显示一段消息。

  • 如果getCurrentPosition()运行成功,则向参数showPosition中指定的函数返回一个coordinates对象

  • showPosition() 函数获得并显示经度和纬度

上面的示例是一个非常基础的地理定位脚本,不含错误处理。

处理错误和拒绝

getCurrentPosition() 方法的第二个参数用于处理错误。它指定当获取用户位置失败时运行的函数:

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>دليل الأساسيات (oldtoolbag.com)</title> 
</head>
<body>
<p id="demo">انقر على الزر للحصول على إحداثيات موقعك الحالي (قد يستغرق وقتًا طويلاً للحصول على المعلومات):</p>
<button onclick="getLocation()">ضغطي هنا</button>
<script>
var x = document.getElementById("demo");
function getLocation()
{
    if (navigator.geolocation)
    {
        navigator.geolocation.getCurrentPosition(showPosition,showError);
    }
    else
    {
        x.innerHTML="该浏览器不支持定位。";
    }
}
function showPosition(position)
{
    x.innerHTML="العرض: " + position.coords.latitude + " ;" 
    "<br>الطول: " + position.coords.longitude;    
}
function showError(error)
{
    switch(error.code) 
    {
        case error.PERMISSION_DENIED:
            x.innerHTML="用户拒绝对获取地理位置的请求。"
            break;
        case error.POSITION_UNAVAILABLE:
            x.innerHTML="位置信息是不可用的。"
            break;
        case error.TIMEOUT:
            x.innerHTML="请求用户地理位置超时。"
            break;
        case error.UNKNOWN_ERROR:
            x.innerHTML="خطأ غير معروف."
            break;
    }
}
</script>
</body>
</html>
الاختبار لرؤية <‹/›

错误代码:

  • Permission denied - 用户不允许地理定位

  • Position unavailable - 无法获取当前位置

  • Timeout - 操作超时

在地图中显示结果

如需在地图中显示结果,您需要访问可使用经纬度的地图服务,比如谷歌地图或百度地图:

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>دليل الأساسيات (oldtoolbag.com)</title> 
</head>
<body>
<p id="demo">انقر على الزر للحصول على إحداثيات موقعك الحالي (قد يستغرق وقتًا طويلاً للحصول على المعلومات):</p>
<button onclick="getLocation()">ضغطي هنا</button>
<script> var x = document.getElementById("demo"); function getLocation() {     if (navigator.geolocation)     {         navigator.geolocation.getCurrentPosition(showPosition,showError);     }     else     {         x.innerHTML="هذا المتصفح لا يدعم الحصول على الموقع الجغرافي.";     } } function showPosition(position) {     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=""; } function showError(error) {     switch(error.code)      {         case error.PERMISSION_DENIED:             x.innerHTML="用户拒绝对获取地理位置的请求。"             break;         case error.POSITION_UNAVAILABLE:             x.innerHTML="位置信息是不可用的。"             break;         case error.TIMEOUT:             x.innerHTML="请求用户地理位置超时。"             break;         case error.UNKNOWN_ERROR:             x.innerHTML="خطأ غير معروف."             break;     } } </script> </body> </html>الاختبار لرؤية <‹/›

في المثال السابق، استخدمنا البيانات العشري للطول والعرض لعرض الموقع على خريطة جوجل (استخدام الصور الثابتة).

سكربتات Google Maps
الرابط أعلاه يوضح كيفية استخدام السكربت لعرض خريطة تفاعلية تحتوي على خيارات علامات النقاط، التكبير والسحب.

معلومات الموقع المحدد

هذه الصفحة تظهر كيفية عرض موقع المستخدم على الخريطة. ومع ذلك، فإن تحديد الموقع الجغرافي مفيد جدًا أيضًا للحصول على معلومات حول الموقع المحدد.

مثال:

طريقة getCurrentPosition() - البيانات التي تعود

إذا نجح getCurrentPosition()، فإنه يعود بمفهوم يحتوي دائمًا على الخصائص latitude، longitude وaccuracy. إذا كانت متاحة، فإنه يعود أيضًا بالخصائص التالية.

الخصائصالوصف
coords.latitudeالعرض العشري
coords.longitudeالطول العرض عشري
coords.accuracyدقة الموقع
coords.altitudeالارتفاع، فوق مستوى سطح البحر بمتر
coords.altitudeAccuracyدقة الارتفاع للموقع
coords.headingاتجاه، من الشمال المطلق بالدرجات
coords.speedالسرعة، بمتر/ثانية
timestampالتاريخ والوقت الرد

مفهوم Geolocation - طرق مثيرة للاهتمام أخرى

watchPosition() - تعود بموقع المستخدم الحالي وتستمر في العودة بمواقع تحرك المستخدم (مثل GPS في السيارة).

clearWatch() - تتوقف طريقة watchPosition()

مثال أدنى يعرض طريقة watchPosition(). تحتاج إلى جهاز GPS دقيق لتجربة هذا المثال (مثل iPhone):

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>دليل الأساسيات (oldtoolbag.com)</title> 
</head>
<body>
<p id="demo">انقر على الزر للحصول على إحداثيات موقعك الحالي (قد يستغرق وقتًا طويلاً للحصول على المعلومات):</p>
<button onclick="getLocation()">ضغطي هنا</button>
<script>
var x = document.getElementById("demo");
function getLocation()
{
    if (navigator.geolocation)
    {
        navigator.geolocation.watchPosition(showPosition);
    }
    else
    {
        x.innerHTML="هذا المتصفح لا يدعم الحصول على الموقع الجغرافي.";
    }
}
function showPosition(position)
{
    x.innerHTML="العرض: " + position.coords.latitude + " ;" 
    "<br>الطول: " + position.coords.longitude;    
}
</script>
</body>
</html>
الاختبار لرؤية <‹/›