আমি এই উত্তরটি প্রেসিংসন.কম থেকে পেয়েছি, আমি মনে করি এটি আপনাকে সহায়তা করতে পারে।
বর্তমানে যেমন আমি অ্যানিমেটিংয়ের জন্য "পজিশন" কিপ্যাথটি ব্যবহার করতে পারি না, আমি আলাদাভাবে "অক্ষাংশ" এবং "দ্রাঘিমাংশ" কীপ্যাথগুলি ব্যবহার করে এটি অ্যানিমেট করে শেষ করেছি।
প্রথমে পয়েন্টগুলি গণনা করুন এবং 2 টি পৃথক অ্যারে যুক্ত করুন, একটি দ্রাঘিমাংশের মান (y) এবং একটি দ্রাঘিমাংশ (x) এর জন্য এবং তারপরে অ্যানিমেট করার জন্য CAKeyFrameAnimation এর মান বৈশিষ্ট্যটি ব্যবহার করুন। ২ টি কেকেফ্রেমএনিমেশন অবজেক্ট (প্রতিটি অক্ষের জন্য ১ টি) তৈরি করুন এবং তাদের CAAnimationGroup ব্যবহার করে একসাথে গোষ্ঠী তৈরি করুন এবং একটি বৃত্ত গঠনের জন্য তাদের একসাথে প্রাণবন্ত করুন।
আমার সমীকরণে আমি প্রতিটি অক্ষের ব্যাসার্ধের দৈর্ঘ্যকে পৃথক করি যাতে আমি ওভাল পথও তৈরি করতে পারি।
NSMutableArray *latitudes = [NSMutableArray arrayWithCapacity:21];
NSMutableArray *longitudes = [NSMutableArray arrayWithCapacity:21];
for (int i = 0; i <= 20; i++) {
CGFloat radians = (float)i * ((2.0f * M_PI) / 20.0f);
// Calculate the x,y coordinate using the angle
CGFloat x = hDist * cosf(radians);
CGFloat y = vDist * sinf(radians);
// Calculate the real lat and lon using the
// current lat and lon as center points.
y = marker.position.latitude + y;
x = marker.position.longitude + x;
[longitudes addObject:[NSNumber numberWithFloat:x]];
[latitudes addObject:[NSNumber numberWithFloat:y]];
}
CAKeyframeAnimation *horizontalAnimation = [CAKeyframeAnimation animationWithKeyPath:@"longitude"];
horizontalAnimation.values = longitudes;
horizontalAnimation.duration = duration;
CAKeyframeAnimation *verticleAnimation = [CAKeyframeAnimation animationWithKeyPath:@"latitude"];
verticleAnimation.values = latitudes;
verticleAnimation.duration = duration;
CAAnimationGroup *group = [[CAAnimationGroup alloc] init];
group.animations = @[horizontalAnimation, verticleAnimation];
group.duration = duration;
group.repeatCount = HUGE_VALF;
[marker.layer addAnimation:group forKey:[NSString stringWithFormat:@"circular-%@",marker.description]];