MKAnnotationViews Z-sipariş

oy
13

Ben MKMapKit sınırlamaları ile oldukça sinirli alıyorum. En güncel sorun dokunur ile, özellikle olarak, açıklama görüş z sipariş ile ilgilidir. Varsayılan z sipariş kabul ederse mapkit verir:

  1. Sipariş rastgele görünür. z sırasını açıklamalar ilave edildi için bağlantılı değildir.
  2. bir açıklama üst ek açıklama dokunmadan, başka birinin üstüne kadar sona ererse genellikle alt ek açıklaması için ek bilgiyi getirir. Hatta çizim sırasını saygı duymayan isabet Saptama gibi görünüyor. Bunda ne var?

I (z sırası üzerinde bir miktar kontrol sağlamak için tasarlanmıştır) web üzerinde bulunan aşağıdaki koda benzer bir şey kullanarak 1. çözme denedim

- (void) MapView: (MKMapView *) MapView didAddAnnotationViews: (NSArray *) görüntüleme {
   için (görünümlerde MKAnnotationView * annView) {
      TopBottomAnnotation * Ann = (TopBottomAnnotation *) [annView açıklama];
      Eğer ([Ann üst]) {
         [[AnnView Superview] bringSubviewToFront: annView];
      } Başka {
         [[AnnView Superview] sendSubviewToBack: annView];
      }
   }

}

didAddAnnotationViews: MapView geçirilen açıklama görünümleri aracılığıyla Koşu ve z sırasını ayarlama 1. düzeltmek gibi görünüyor. Sorun şimdi çizgisi görünümleri açıklama görünümlerine üstünde artık hep olmasıdır. MapKit katmanları (açıklamalar her açıklama görüntüleme civarında bir katmanda çizilmelidir) hakkında çok karışık görünüyor. Hatta aldığınız tüm MKAnnotationViews aynı Superview (özel sınıf MKOverlayView) beri o bocalama nasıl anlayabiliriz. Herhangi makul bir tasarım bu yerleşimi görünümünde ilgili ek bilgileri çizmek düşünürdüm.

Herkes 1. veya başarılı 2. münhal?

Oluştur 05/11/2009 saat 17:04
kaynak kullanıcı
Diğer dillerde...                            


3 cevaplar

oy
8

Eğer (zaten var gibi geliyor) bir özel annotationView varsa bu eklemeyi deneyebilirsiniz:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{
    [self.superview bringSubviewToFront:self];
    [super touchesBegan:touches withEvent:event];
}

Bir yan etkisi bir işaretleyici de dokundu her zaman o kullanıcı üzerinde duruluyor ne beri aslında mantıklı z sırası, önüne çıkar olmasıdır.

Cevap 05/11/2009 saat 17:54
kaynak kullanıcı

oy
7

Yapmak ne çalışıyorum için mükemmeldir Ramin. Gerçi tanımlanan özel bir ek açıklama görünümü yoktu. Ben bir kategori kullanarak çözdü ve mükemmel çalıştı!

İşte başlık budur:

#import <Foundation/Foundation.h> 
#import <MapKit/MapKit.h>


@interface MKPinAnnotationView (ZIndexFix)
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event; 
@end

Ve Uygulanması:

#import "AEBMapViewCategory.h"
@implementation MKPinAnnotationView (ZIndexFix)
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{
    [self.superview bringSubviewToFront:self];
    [super touchesBegan:touches withEvent:event];
}
@end
Cevap 04/12/2009 saat 19:40
kaynak kullanıcı

oy
6

başka bir çözüm, kurulum açıklama görünümü katmanın zPosition (annotationView.layer.zPosition) 'de deneyin:

(Void) MapView: (MKMapView *) MapView didAddAnnotationViews: (NSArray *) görüşlerini;

Cevap 03/05/2013 saat 12:12
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more