Bu yanıtı pressanswer.com'dan aldım, size yardımcı olabileceğini düşünüyorum.
Şu anda animasyon için "konum" ana yolunu kullanamadığım için, "enlem" ve "boylam" ana yollarını ayrı ayrı kullanarak onu hareketlendirmeyi bıraktım.
Önce noktaları hesaplayın ve bunları biri enlem değeri (y) ve diğeri boylam (x) için olmak üzere 2 ayrı diziye ekleyin ve ardından canlandırmak için CAKeyFrameAnimation'daki values özelliğini kullanın. 2 CAKeyFrameAnimation nesnesi (her eksen için 1) oluşturun ve CAAnimationGroup kullanarak bunları gruplayın ve bir daire oluşturmak için bunları birlikte hareketlendirin.
Denklemimde, her eksendeki yarıçapın uzunluğunu değiştiriyorum, böylece oval bir yol da oluşturabiliyorum.
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]];