سؤال

أريد أن أعرف السمت (بالطبع) للكائن البعيد (على الخريطة). لدي إحداثيات من هذا الكائن البعيد. حاولت أن أفعل هذا:

CLLocation *distLoc = [CLLocation alloc] initWithLatitude:40.725405 
                                                longitude:-74.003906]; // NY city

NSLog(@"loc: %f", distLoc.course);

الإخراج هو: loc: -1.0...

لكن لماذا؟

أريد أن أعرف هذه الدورة من اتجاهي الحالي. لدي أيضا تحديث الموقع مع startUpdatingLocation طريقة وتحديث تفويض.

ما أقوم به خطأ؟

لماذا لا يمكنني الحصول على مسار للكائن البعيد من موقفي الحالي؟ شكرًا.

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

المحلول

-الصبع يرجع اتجاه كائن متحرك. لذلك يمكنك الاتصال -على موقع المستخدمين الحالي. لا يمنحك اتجاهًا من موقعك إلى موقع آخر. لذلك ما لم تتحرك مدينة نيويورك ، فستعود دائمًا -1

إذا كنت تريد العثور على عنوان البوصلة ، فيجب أن تتحرك ، يمكنك القيام بذلك:

#define RAD_TO_DEG(r) ((r) * (180 / M_PI))

...    

CLLocationCoordinate2D coord1 = currentLocation.coordinate;
CLLocationCoordinate2D coord2 = distLoc.coordinate;

CLLocationDegrees deltaLong = coord2.longitude - coord1.longitude;
CLLocationDegrees yComponent = sin(deltaLong) * cos(coord2.latitude);
CLLocationDegrees xComponent = (cos(coord1.latitude) * sin(coord2.latitude)) - (sin(coord1.latitude) * cos(coord2.latitude) * cos(deltaLong));

CLLocationDegrees radians = atan2(yComponent, xComponent);
CLLocationDegrees degrees = RAD_TO_DEG(radians) + 360;

CLLocationDirection heading = fmod(degrees, 360);

نصائح أخرى

استخدم الكود أدناه للحصول على الدورة التدريبية

CLLocation *distLoc =  [[CLLocation  alloc] initWithCoordinate:loc altitude:location.altitude horizontalAccuracy:location.horizontalAccuracy verticalAccuracy:location.verticalAccuracy  course:location.course speed:location.speed timestamp:location.timestamp];
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top