سؤال

حسنًا ، لذا بفضل Claus Broch ، أحرزت بعض التقدم بمقارنة موقعين GPS. يجب أن أكون قادرًا على القول "إذا كان CurrentLocation مساوياً (أي موضع GPS من قائمة) ثم افعل شيئًا

الكود الخاص بي في الوقت الحالي هو:

CLLocationCoordinate2D bonusOne; bonusOne.latitude = 37.331689; bonusOne.longitude = -122.030731;

وهو موقع GPS Simulators في حلقة Infinite

CLLocation *loc1 = [[CLLocation alloc] initWithLatitude:bonusOne.latitude longitude:bonusOne.longitude];
double distance = [loc1 getDistanceFrom:newLocation];
if(distance <= 10000000) {

ثم تفعل شيئا }

أي رقم أقل من 10000000 ويفترض أنه لا يوجد تطابق.

هل كانت مفيدة؟

المحلول

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

CLLocation *bonusLocation = [[CLLocation alloc] initWithLatitude:bonusOne.latitude longitude:bonusOne.longitude];
float distance = [bonusLocation getDistanceFrom:newLocation];
float threshold = 2 * [newLocation horizontalAccuracy]; // Or whatever you like
if(distance <= threshold) {
  // You are at the bonus location.
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top