يسمى نوع الخدمة الأكثر شعبية الخدمة المستندة إلى الموقع (LBS). هذا النوع من الخدمة هو المعلومات التي تستخدمها المؤسسات مناطق بالقرب من إحداثيات نقطة معينة (مثل الموقع الذي يوجد فيه المستخدم) ، مثل الخدمات المتعلقة بالخريطة الشائعة. في HTML5 ، تمت إضافة واجهة برمجة تطبيقات جغرافية جديدة لتحديد وتبادل الموقع الجغرافي.
بيان الخصوصيةتعد الخصوصية مصدر قلق عند مشاركة موقع مادي مع خادم ويب بعيد. لذلك ، تتطلب واجهة برمجة تطبيقات الموقع الجغرافي من المستخدم تقديم أذونات قبل أن يتمكن تطبيق الويب من الوصول إلى معلومات الموقع. عند الوصول أولاً إلى صفحة ويب تطلب بيانات تحديد الموقع الجغرافي ، سيعرض المتصفح شريط إشعار يمنحك لتوفير الوصول إلى موقع المستخدم. اتبع مطالبات المتصفح وحدد التفويض ذي الصلة.
إذا لم يمنح المستخدم أذونات ، فلا يتم توفير معلومات الموقع لتطبيق الويب. إن استدعاء واجهة برمجة التطبيقات ذات الصلة لن يؤدي إلى رد اتصال ناجح.
تحقق من دعم المتصفحيتم دعم واجهة برمجة تطبيقات الموقع الجغرافي في أحدث إصدار من المتصفحات الرئيسية ، ولكن لكي تكون متوافقة مع المتصفحات القديمة ، لا تزال بحاجة إلى التحقق من ذلك. إذا لم تكن واجهة برمجة تطبيقات الموقع الجغرافي متوفرة ، فستكون window.navigator.geolocation فارغة على النحو التالي:
وظيفة show_islocationEnabled ()
{
var str = "لا ، الموقع الجغرافي غير مدعوم." ؛
if (window.navigator.geolocation) {
STR = "نعم ، تم دعم الموقع الجغرافي." ؛
}
تنبيه (STR) ؛
}
تعتمد واجهة برمجة تطبيقات الموقع الجغرافي على خاصية جديدة للكائن العالمي للملاحة: Navigator.GeOccing ، والتي توفر بعض المعلومات المفيدة حول متصفح الزائر ونظامه. يمكن الحصول على معلومات تحديد الموقع الجغرافي من خلال العديد من الوسائل: مثل المحطات الأساسية أو قواعد بيانات الويب أو GPS. تختلف دقة معلومات تحديد الموقع الجغرافي التي تم الحصول عليها باستخدام طرق مختلفة. بشكل عام ، يتم الحصول على أكثرها دقة من خلال GPS (يتم استخدام معظم GPS على منصات المحمول ، ويعتمد منصة الكمبيوتر بشكل أساسي على بيانات الشبكة). بالصدفة ، في بعض المواقع ، قد لا تتمكن من الحصول على قراءات مواقع جغرافية واضحة أو لا تتلقى أي بيانات.
ضع الموقع الحالياستخدم طريقة getCurrentPosition () للتنقل. تحديد الموقع للحصول على الموقع الحالي للمستخدم. هذه الطريقة تحصل فقط على معلومات الموقع مرة واحدة. عندما يتم استدعاء الطريقة بواسطة البرنامج النصي ، تحاول الطريقة الحصول على الموقع الحالي لجهاز المضيف بطريقة غير متزامنة.
توقيع الطريقة: getCurrentPosition (GeolocationSuccessCallback ، [GeoLocationerRorCallback ، GeolocationOptions]) ؛
1.
2. GeolocationerrorCallback. يستخدم رد الاتصال عند حدوث خطأ (اختياري)
3. خيارات تحديد الموقع الجغرافي (اختياري)
معلومات الموقع
بعد أن تحصل طريقة getCurrentPositon () على الموضع الحالي بنجاح ، سيحفظ معلومات الموضع لكائن موضع ، ثم استخدام هذا الكائن كمعلمة لتنفيذ رد اتصال GeolocationSucsCessCallback. في وظيفة رد الاتصال هذه ، يمكنك معالجة المعلومات الواردة في هذا الكائن بشكل تعسفي.
يحتوي كائن الموضع على خصائصان: الطابع الزمني والمنسق. تمثل سمة الطابع الزمني وقت إنشاء بيانات تحديد الموقع الجغرافي ، وتمثل سمة التنسيق معلومات تحديد الموقع الجغرافي ، وتحتوي على سبع سمات:
.coords.latitude: تقدير خط العرض
. التنسيقات
.coordsithitude: الارتفاع المقدر
. Coords.Accuracy: دقة تقديرات خط الطول وخطوط الطول المقدمة في العدادات
.coords.Altitudeaccuracy: دقة تقديرات الارتفاع المقدمة في العدادات
. الإحداثيات.
.coords.speed: سرعة الأرض الحالية للجهاز بالأمتار في الثانية
بشكل عام ، هناك ثلاثة من هذه الخصائص مضمونة: coords.latitude ، coords.longitude ، and coords.Accuracy ، و REST Return Null ؛ هذا يعتمد على إمكانيات الجهاز وخادم تحديد المواقع الخلفي الذي يستخدمه. علاوة على ذلك ، يمكن حساب خصائص العنوان والسرعة بناءً على الموضع السابق للمستخدم.
التعامل مع الأخطاءفي حالة حدوث خطأ عند تنفيذ طريقة getCurrentPositon () ، تمرر الطريقة كائن موضعي إلى رد اتصال GeoLocationerRorCallback.
تعيين خيارات تحديد الموقع الجغرافييمكنك تعيين ثلاث خصائص من geolocationOptions:
EnableHighcancuracy: إذا كان الجهاز يدعم الدقة العالية ، فإن هذا الخيار يشير إلى ما إذا كان يتم تمكين الدقة العالية.
مهلة: مهلة الاستعلام
الحد الأقصى: الحد الأقصى لعدد المرات التي يوجد فيها ذاكرة التخزين المؤقت ، يمكن خلالها استخدام ذاكرة التخزين المؤقت.
انظر المثال الكامل أدناه:
<! doctype html>
<html>
<body>
<p id = "demo"> انقر على الزر للحصول على موضعك: </p>
<button onClick = "getLocation ()"> جربه </button>
<div id = "maholder"> </viv>
<script>
var x = document.getElementById ("demo") ؛
وظيفة getLocation () {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition (العرض ، دش) ؛
}
آخر{
X.innerhtml = "الموقع الجغرافي غير مدعوم من هذا المتصفح." ؛
}
}
عرض الوظائف (الموضع) {
var latlon = position.coords.latitude+"،"+position.coords.longitude ؛
var img_url = "http://maps.googleapis.com/maps/api/staticmap؟center=" +
Latlon + "& Zoom = 9 & size = 400x300 & sensor = false" ؛
document.getElementById ("maholder"). innerhtml = "<img src = '"+img_url+"' />" ؛
}
وظيفة دش (خطأ) {
التبديل (error.code) {
خطأ الحالة.
X.innerhtml = "رفض المستخدم طلب تحديد الموقع الجغرافي."
استراحة؛
خطأ error.position_unavailable:
X.innerhtml = "معلومات الموقع غير متوفرة."
استراحة؛
error error.timeout:
X.InnerHTML = "الطلب للحصول على توقيت موقع المستخدم."
استراحة؛
error error.unknown_error:
x.innerhtml = "حدث خطأ غير معروف."
استراحة؛
}
}
</script>
</body>
</html>
يأخذ هذا المثال الموقع الجغرافي للجهاز الحالي ويعرضه في خرائط Google. بالطبع يمكنك استخدام إصدار الرسم البياني الثابت في Baidu Maps API لتحويل هذا المثال. بالنسبة إلى Baidu MAP API ، يرجى الرجوع إلى الرابط في المرجع العملي لاحقًا.
تشغيل/إلغاء تحديد المواقع المستمرةاستخدم طريقة watchposition () للتنقل. تحديد الموقع لاستطلاع موقع المستخدم بانتظام لمعرفة ما إذا كان موقع المستخدم قد تغير. تحتوي هذه الطريقة على ثلاث معلمات: هذه المعلمات الثلاثة هي نفس طريقة getCurrentPosition () ، رد اتصال ناجح ، رد اتصال فاشل ، وخيار للحصول على معلومات الموضع ؛ تحتوي هذه الطريقة على قيمة الإرجاع ، والتي يتم استخدامها لإلغاء تحديد المواقع المستمرة.
استخدم طريقة clearwatch () للتنقل. تحديد الموقع لإنهاء مراقبة مستمرة () ، والتي تأخذ معلمة واحدة فقط.
انظر المثال التالي:
<! doctype html>
<html>
<head>
<title> مثال API GeoLocation: الاستماع إلى تحديثات الموقع </title>
<meta http-equiv = "x-ua compatible" content = "ie = 9" />
<script type = "text/javaScript">
وظيفة setText (val ، e) {
document.getElementById (e) .value = val ؛
}
var nav = null ؛
var watchid
وظيفة ankefforpositionupdates () {
if (nav == null) {
Nav = window.navigator ؛
}
if (nav! = null) {
var geoloc = nav.Geolocation ؛
if (geoloc! = null) {
WatchId = Geoloc.WatchPosition (SuccessCallback) ؛
}
آخر {
تنبيه ("تحديد الموقع الجغرافي غير مدعوم") ؛
}
}
آخر {
تنبيه ("الملاح غير موجود") ؛
}
}
وظيفة ClearWatch (WatchId) {
window.navigator.geolocation.clearwatch (WatchId) ؛
}
وظيفة SuccessCallback (موقف)
{
setText (position.coords.latitude ، "Latitude") ؛
setText (position.coords.longitude ، "loncitude") ؛
}
</script>
</head>
<body>
<label for = "latitude"> خط العرض: < /label> <input id = "latitude" />
<label for = "loncitude"> خط الطول: < /label> <input id = "lcuduce" />
<type type = "button" value = "Watch Latitude and Longitude" OnClick = "LearkForpositionupDates ()" />
<type type = "button" value = "clear watch" onClick = "ClearWatch ()" />
</body>
</html>
المرجع العملي:المستند الرسمي: http://www.w3schools.com/html5/html5_geolocation.asp
مخاوف قالب: http://www.cuoxin.com/w3school/html5/
Microsoft Help: http://msdn.microsoft.com/zh-cn/library/gg589502(v=vs.85)
Baidu Map API: http://dev.baidu.com/wiki/static/index.htm