فحص سياج جغرافي دائري
تحدد أداة فحص السياج الجغرافي الدائري هذه ما إذا كانت نقطة محددة بخط العرض والطول تقع داخل نصف قطر حول إحداثية مركزية، أو على حدّه تمامًا، أو خارجه.
شغّل الأداة مجانًا
تحسب الأداة مسافة الدائرة العظمى بصيغة Haversine، وتقارنها بنصف القطر بالأمتار، ثم تعيد هامشًا موقّعًا يوضح المسافة المتبقية. يعني الهامش الموجب أن النقطة في الداخل، ويحدد الصفر الحد، بينما يبين الهامش السالب مقدار وجود النقطة في الخارج. الحساب حتمي ولا يحتاج إلى خدمة خرائط أو بحث عن جهاز أو طلب شبكة.
حددوا النقطة والمركز ونصف القطر بوضوح
يتكون السياج الجغرافي الدائري من ثلاثة عناصر أساسية: خط عرض المركز، وخط طوله، ونصف قطر غير سالب مقاس بالأمتار. ويحدد خط عرض النقطة وخط طولها المنفصلان الموقع الذي تريدون اختباره. أدخلوا جميع الإحداثيات بالدرجات العشرية ضمن نطاقات WGS84 الجغرافية المعتادة: خط العرض من سالب تسعين إلى تسعين، وخط الطول من سالب مئة وثمانين إلى مئة وثمانين. لا ترسلوا إحداثيات خرائط مسقطة، أو نصوص الدرجات والدقائق والثواني، أو نصف قطر بالكيلومترات من دون تحويله أولًا. فعلى سبيل المثال، تتطلب منطقة توصيل مداها خمسة كيلومترات قيمة radius_m تساوي 5000. تقبل الأداة الصفر نصفَ قطر صالحًا؛ وفي هذه الحالة لا تقع في الداخل إلا نقطة تطابق إحداثيات المركز تمامًا. وترفض القيم المفقودة والأعداد غير المنتهية والإحداثيات الخارجة عن نطاقها القانوني وأنصاف الأقطار السالبة بدل تصحيح خطأ تكامل محتمل بصمت. تعمل خطوط الطول على جانبي خط التاريخ الدولي من دون منطق خاص لدى العميل، لأن الصيغة المثلثية تستخدم تلقائيًا أقصر فصل على سطح الكرة.
فسروا العضوية والمسافة والهامش الموقّع
تتضمن الاستجابة أربعة حقول موجزة. تكون القيمة المنطقية inside صحيحة عندما تكون المسافة المحسوبة أقل من نصف القطر أو مساوية له، ولذلك تنتمي النقطة الواقعة على الحد تمامًا إلى السياج. يمثل الحقل distance_m مسافة الدائرة العظمى بين المركز والنقطة على كرة أرضية متوسطة نصف قطرها 6,371,000 متر. ويكرر radius_m نصف القطر الذي جرى التحقق منه، بينما يطرح margin_m المسافة من نصف القطر. وغالبًا ما يفيد هذا الهامش الموقّع أكثر من القيمة المنطقية وحدها: فالقيمة 240 تعني أن النقطة في الداخل مع نحو 240 مترًا متبقيًا، والصفر يعني أنها على الحافة، وسالب 85 يعني أنها خارج السياج بنحو 85 مترًا. تُقرّب مسافات الخرج إلى ست منازل عشرية لضمان تسلسل ثابت، لكن قرار inside يستخدم الحساب الكامل غير المقرب. وبذلك لا تغير قيمة العرض المقربة المقارنة الحقيقية. في سياسات التوجيه أو الفوترة، اختاروا احتياطيًا تشغيليًا قبل الاستدعاء أو قارنوا الهامش المعاد بعتبة السلامة الخاصة بكم.
استخدموا النتيجة بأمان في العمليات الفعلية
تلائم الاختبارات الدائرية اكتشاف الوصول، وتحديد أهلية التوصيل، وتنبيهات المعدات القريبة، ومناطق الدخول التقريبية. لكنها ليست حدود ملكية قانونية، ولا تراعي الطرق أو الجدران أو الارتفاع أو طوابق المباني أو عدم دقة GPS. قد يتذبذب موقع الهاتف عدة أمتار أو أكثر، ولذلك تتطلب تطبيقات الإنتاج عادة قراءات متكررة أو حدًا للدقة أو تباطؤًا تفاضليًا قبل إطلاق إجراء لا يمكن التراجع عنه. فمثلًا، يمكن لسير عمل الوصول أن يسجل الدخول فقط عندما يتجاوز margin_m عشرين مترًا، ويسجل الخروج عندما ينخفض عن سالب عشرين، مما يمنع تغير الحالة سريعًا قرب الحافة. يتسم نموذج Haversine الكروي بالاتساق والسرعة في أنحاء العالم، بما في ذلك قرب القطبين وخط التاريخ الدولي، لكنه تقريب وليس حساب مسح إهليلجيًا. تعطي المدخلات نفسها النتيجة ذاتها دائمًا لأن المحلل لا يستخدم الشبكة أو الوقت الحالي أو العشوائية أو قاعدة خرائط خارجية. يتوفر التنفيذ التفاعلي في المتصفح، وتبلغ كلفة كل طلب API آلي $0.002. احتفظوا بالإحداثيات الأصلية مع النتيجة إذا كان تدقيق لاحق سيحتاج إلى تفسير القرار.
حالات الاستخدام
أهلية التوصيل
تحققوا مما إذا كانت إحداثية العميل ضمن نطاق خدمة المتجر، واستخدموا الهامش لتوضيح قربها من الحد.
منطق الوصول والمغادرة
قيّموا قراءات الجهاز مقابل سياج جغرافي وطبقوا عتبة موجبة أو سالبة لتقليل التذبذب عند الحافة.
تنبيهات قرب الأصول
حددوا ما إذا كان الموقع المبلّغ عنه لأصل ما قد دخل منطقة مراقبة من دون الاستعلام من مزود خرائط خارجي.
الأسئلة الشائعة
ماذا يعني الهامش الموجب؟
تقع النقطة داخل السياج الجغرافي، ويمثل margin_m المسافة المتبقية حتى الحد الدائري.
هل تعد النقطة الواقعة على الحد في الداخل؟
نعم. تستخدم العضوية مسافة أقل من نصف القطر أو مساوية له؛ لذا يعيد الحد الدقيق inside صحيحة وهامشًا صفريًا.
ما الوحدات المستخدمة؟
يُقاس نصف القطر والمسافة المحسوبة والهامش بالأمتار، ويُعبّر عن خط العرض والطول بالدرجات العشرية.
ما صيغة المسافة المستخدمة؟
يستخدم المحلل صيغة Haversine على كرة أرضية متوسطة نصف قطرها 6,371,000 متر.
ما كلفة الفحص عبر API؟
تبلغ كلفة كل طلب API ناجح $0.002. ويتيح منفذ المتصفح الحتمي أيضًا إجراء اختبارات تفاعلية.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/geo/geofence-circle-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"point_lat":40.73061,"point_lon":-73.935242,"center_lat":40.7128,"center_lon":-74.006,"radius_m":10000}'const res = await fetch("https://api.kit.forhosting.com/geo/geofence-circle-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"point_lat": 40.73061,
"point_lon": -73.935242,
"center_lat": 40.7128,
"center_lon": -74.006,
"radius_m": 10000
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/geofence-circle-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"point_lat": 40.73061,
"point_lon": -73.935242,
"center_lat": 40.7128,
"center_lon": -74.006,
"radius_m": 10000
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/geofence-circle-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"point_lat":40.73061,"point_lon":-73.935242,"center_lat":40.7128,"center_lon":-74.006,"radius_m":10000}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"point_lat":40.73061,"point_lon":-73.935242,"center_lat":40.7128,"center_lon":-74.006,"radius_m":10000}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/geofence-circle-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"point_lat": 40.73061,
"point_lon": -73.935242,
"center_lat": 40.7128,
"center_lon": -74.006,
"radius_m": 10000
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.geofence_circle_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |