मुझे यह जवाब दबाने के लिए मिला है। Com, मुझे लगता है कि यह आपकी मदद कर सकता है।
जैसा कि वर्तमान में मैं एनिमेट करने के लिए "पोज़िशन" कीपाथ का उपयोग नहीं कर सकता, मैंने अलग से "लैटीट्यूड" और "लॉन्गिट्यूड" कीपैथ का उपयोग करके इसे समाप्त कर दिया।
पहले बिंदुओं की गणना करें और उन्हें 2 अलग-अलग सरणियों में जोड़ें, एक अक्षांश मान (y) के लिए और एक देशांतर (x) के लिए और फिर CAKeyFrameAnimation में चेतन के लिए मान गुण का उपयोग करें। 2 CAKeyFrameAnimation ऑब्जेक्ट्स बनाएं (प्रत्येक अक्ष के लिए 1) और 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]];