2012-07-11 11 views
8

Harita görünümünde hareket eden bir aracı simüle etmek için AnnotationView katmanına CABasicAnimation ekliyorum.Animasyonlu AnnotationView, harita görünümünü yakınlaştırırken kayboluyor?

Animasyon devam ederken harita görüntüsünü yakınlaştırmaya veya uzaklaştırmaya çalışana kadar bu işlem sorunsuz çalışıyor.

Harita görünümünü yakınlaştırırken animasyon ek açıklama görünümünün kaybolduğunu buldum !!

Bunun nedeni, harita görüntüsünü yakınlaştırırken animasyon nesnesinin ilişkilendirilmiş katmanının kaldırılmasından kaynaklanabilir.

Bunu, yakınlaştırırken animasyonu durdurarak çözmeye çalışıyorum. ama sonuç iyi değil. Araba hedef noktasına atlamak gibi görünüyor.

Bu konuda herhangi bir fikri olan var mı?

Harita görünümünü yakınlaştırırken animasyonun nasıl devam edeceğini herkes bilir?

+0

bu problemde de herhangi bir ilerleme oldu mu? Aynı sorunu yaşıyorum ve çözmek istiyorum. –

+0

@Hubert, hareket eden ek açıklama kodunuzu gönderebilir mi? – Mubbashar

cevap

1

Sorununuzu nasıl programlayacağınızı bilmiyorum, ancak eğer kullanıcı yakınlaştırmaya başladığı zaman, zum konumunu tamamladığında otomobil konumunu (nokta a) doğru konumlandırırsanız, geçerli konum ile yeni arasındaki mesafeyi hesaplayın. pozisyonu (b noktası) ve daha sonra a noktasından b noktasına hareket ettirin. Bu şekilde araç ikinci hedef noktasına "zıplamak" için dikiş olmaz. Bunu biraz meraklı yapmak için, aracın hızını normal hızın iki katıyla başlatın ve ardından "B" noktasına yaklaştıkça normal hıza yavaşlayın. Bunun bir böcek gibi daha az ve bir etki gibi görünmesini sağlayacağını düşünüyorum.

+0

İyi fikirler, ama gerçekten çalışma koduyla bir cevaba ihtiyacım var. Kullanıcının MKMapView'da yakınlaştığını nasıl anlayacağımı bile bilmiyorum. – Felix

0

Sanırım mapView:regionDidChangeAnimated: temsilci yöntemini kullanabilirsiniz. Kullanıcı kaydırdığında/yakınlaştığında, bu yöntem çağrılır. sadece bir kere dene. Bu size yardımcı olabilir.

1

Ben regionWillChangeAnimated tüm açıklama animasyonlar sonlandırma bunu çözüldü: -

- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated 
{ 

    for (int i=0;i< [mapView.annotations count];i++) 
    { 
    id annotation = [mapView.annotations objectAtIndex:i]; 

    MKAnnotationView* annView =[mapView viewForAnnotation: annotation]; 
    if (annView != nil) 
    { 

     CALayer* layer = annView.layer; 
     [layer removeAllAnimations]; 
    } 

    } 
} 
İlgili konular