عدة طرق لتحديد الموقع الجغرافي: عنوان IP ، GPS ، WiFi ، GSM/CDMA
عملية اكتساب الموقع الجغرافي :1. يفتح المستخدم تطبيق ويب يحتاج إلى الحصول على موقع جغرافي.
2. يطلب التطبيق المتصفح إلى الموقع الجغرافي ، ويظهر المتصفح استعلامًا لسؤال ما إذا كان المستخدم يشارك الموقع الجغرافي.
3. على افتراض أن المستخدم يسمح بذلك ، فإن المستعرض سيستعلم المعلومات ذات الصلة من الإعدادات.
4. يرسل المتصفح المعلومات ذات الصلة إلى خادم موقع موثوق به ، ويعود الخادم إلى الموقع الجغرافي المحدد.
تنفيذ الوضع الجغرافي HTML5 :1. تنفيذ تكنولوجيا الحصول على المستخدمين بناءً على المتصفح (لا يوجد دعم للواجهة الخلفية)
2. حدد موقع الموقع الجغرافي للمستخدم بدقة (دقة تصل إلى 10 أمتار ، اعتمادًا على الجهاز)
3. تتبع الموقع الجغرافي للمستخدم باستمرار
4. تقديم معلومات الموقع بشكل تفاعلي مع خريطة Google أو Baidu Map
يتم استخدام واجهة برمجة تطبيقات الموقع الجغرافي لتبادل معلومات الموقع الجغرافي الحالي للمستخدم مع المواقع الموثوقة ، والتي تتضمن مشكلات خصوصية المستخدم والأمان. لذلك ، عندما يحتاج الموقع إلى الحصول على تحديد الموقع الجغرافي الحالي للمستخدم ، فإن المستعرض سيطالب المستخدم بالسماح أو يرفض.
دعونا أولاً نلقي نظرة على المتصفحات التي تدعم واجهة برمجة تطبيقات تحديد الموقع الجغرافي:
IE9.0+، FF3.5+، Safari5.0+، Chrome5.0+، Opera10.6+، iPhone3.0+، Android2.0+
توجد واجهة برمجة تطبيقات الموقع الجغرافي في كائن Navigator وتحتوي على 3 طرق فقط:
1. getCurrentPosition // الموقع الحالي
2. مراقبة // موقع المراقبة
3. Clearwatch // مراقبة واضحة
navigator.geolocation.getCurrentPosition (... ، وظيفة (خطأ) {
التبديل (error.code) {
error error.timeout:
تنبيه ("توقيت الاتصال ، يرجى المحاولة مرة أخرى") ؛
استراحة؛
خطأ الحالة.
ALERT ("لقد رفضت استخدام خدمة مشاركة الموقع ، تم إلغاء الاستعلام") ؛
استراحة؛
خطأ error.position_unavailable:
ALERT ("، آسف ، لا يمكنك تقديم خدمات الموقع لكوكبتك في الوقت الحالي") ؛
استراحة؛
}
}) ؛
يشبه مراقبة التتبع مقترن مع Clearwatch.
يشبه الساعة طريقة عمل SetInterval و Clearinterval.
var watchpositionId = navigator.geolocation.watchposition (Success_Callback ، error_callback ، Options) ؛
navigator.geolocation.clearwatch (WatchpositionId) ؛
يوفر HTML 5 سلسلة من واجهات برمجة التطبيقات مثل الموقع الجغرافي للمستخدمين لاستخدامه ، مما يسهل المستخدمين إلى إنشاء تطبيقات جغرافية LBS. أولاً ، في متصفح يدعم HTML 5 ، عند فتح واجهة برمجة التطبيقات ، سوف يسأل ما إذا كان المستخدم يوافق على استخدام واجهة برمجة التطبيقات ، وإلا فلن يتم تمكينه ، مما يضمن الأمان.
1. قم بتشغيله لتحديد ما إذا كان المتصفح يدعم LBS APIوظيفة isgeOlocationApiaVailable ()
{
var location = "no ، الموقع الجغرافي غير مدعوم من هذا المتصفح." ؛
if (window.navigator.geolocation) {
الموقع = "نعم ، الدعم الجغرافي مدعوم من هذا المتصفح." ؛
}
تنبيه (الموقع) ؛
}
في المثال أعلاه ، تم اكتشاف الاستثناء أيضًا في طريقة Displayerror ؛
2. الحصول على الموقع الجغرافي للمستخدميتم ذلك باستخدام getCurrentPosition ؛
طلب وظيفة () {
if (nav == null) {
Nav = window.navigator ؛
}
if (nav! = null) {
var geoloc = nav.Geolocation ؛
if (geoloc! = null) {
Geoloc.getCurrentPosition (SuccessCallback) ؛
}
آخر {
ALERT ("لا يتم دعم واجهة برمجة تطبيقات الموقع الجغرافي في متصفحك") ؛
}
}
آخر {
تنبيه ("Navigator غير موجود") ؛
}
}
عندما يتم الحصول على الموقع الجغرافي بنجاح ، سيتم إنشاء طريقة رد الاتصال لمعالجة النتيجة التي تم إرجاعها.
وظيفة setLocation (val ، e) {
document.getElementById (e) .value = val ؛
}
وظيفة SuccessCallback (موقف)
{
setLocation (position.coords.latitude ، "Latitude") ؛ setLocation (position.coords.longitude ، "loncitude") ؛
}
3. سؤال شائع جدًا هو كيفية تتبع الموقع الجغرافي المتغير للمستخدمين. هنا نلخص اثنين من واجهات برمجة التطبيقات المستخدمة.1 مراقبة
الأمثلة على النحو التالي:
وظيفة ankefforpositionupdates () {
if (nav == null) {
Nav = window.navigator ؛
}
if (nav! = null) {
var geoloc = nav.Geolocation ؛
if (geoloc! = null) {
WatchId = Geoloc.WatchPosition (SuccessCallback) ؛
} آخر {
ALERT ("لا يتم دعم واجهة برمجة تطبيقات الموقع الجغرافي في متصفحك") ؛
}
} آخر {
تنبيه ("Navigator غير موجود") ؛
}
}
ثم في SuccessCallback ، يمكنك تعيين أحدث موقع جغرافي لعرضه:
وظيفة SuccessCallback (الموضع) {
setText (position.coords.latitude ، "Latitude") ؛ setText (position.coords.longitude ، "loncitude") ؛
}
إذا كنت لا تريد التتبع في الوقت الفعلي ، فيمكنك إلغاؤه:
وظيفة ClearWatch (WatchId) {
window.navigator.geolocation.clearwatch (WatchId) ؛
}
4. كيفية التعامل مع الاستثناءاتعند مواجهة استثناء ، يمكنك التقاطه:
if (geoloc! = null) {
geoloc.getCurrentPosition (SuccessCallback ، errorcallback) ؛
}
وظيفة errorcallback (خطأ) {
رسالة var = "" ؛
التبديل (error.code) {
خطأ الحالة.
Message = "هذا الموقع لا يحتوي على إذن للاستخدام"
+ "واجهة برمجة تطبيقات تحديد الموقع الجغرافي" ؛
استراحة؛
خطأ error.position_unavailable:
Message = "لا يمكن تحديد الموضع الحالي." ؛
استراحة؛
خطأ error.permission_denied_timeout:
Message = "لا يمكن تحديد الموضع الحالي"
+ "خلال فترة المهلة المحددة." ؛
استراحة؛
}
if (message == "") {
var strerrorcode = error.code.toString () ؛
Message = "لا يمكن تحديد الموضع بسبب"
+ "خطأ غير معروف (رمز:" + strerrorcode + ")." ؛
}
تنبيه (رسالة) ؛
}
5. عرض الموقع على خريطة Google (شريطة تعيين واجهة برمجة تطبيقات Google MAP)وظيفة getCurrentLocation ()
{
إذا (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition (ShowMyposition ، dameror) ؛
}
آخر
{
في حالة تأهب ("لا ، لا يتم دعم واجهة برمجة تطبيقات الموقع الجغرافي بواسطة هذا المتصفح.") ؛
}
}
وظيفة العرض (الموضع)
{
var coordinates = position.coords.latitude+"،"+position.coords.longitude ؛
var map_url = "http://maps.googleapis.com/maps/api/staticmap؟center="
+إحداثيات+"& Zoom = 14 & size = 300x300 & sensor = false" ؛
document.getElementById ("googlemap"). innerhtml = "<img src = '"+map_url+"' />" ؛
}
دش الدش (خطأ)
{
التبديل (error.code)
{
خطأ الحالة.
تنبيه ("هذا الموقع لا يحتوي على إذن لاستخدام واجهة برمجة تطبيقات تحديد الموقع الجغرافي")
استراحة؛
خطأ error.position_unavailable:
في حالة تأهب ("لا يمكن تحديد الموضع الحالي.")
استراحة؛
error error.timeout:
التنبيه ("لا يمكن تحديد الموضع الحالي خلال فترة الزمن المحدد.")
استراحة؛
error error.unknown_error:
التنبيه ("لا يمكن تحديد الموضع بسبب خطأ غير معروف.")
استراحة؛
}
}