Probléma az átfedő jelöléseket (MKAnnotationView) mutat

szavazat
9

Az én iPhone alkalmazás, én vagyok a MapKit a MKMapView és egyedi MKAnnotationView.

A probléma az, amikor kommentárok átfedés a térképen (az én app, kommentárok fotók és azok a fotók átfedés), és amikor megérinti a jelölést, hogy megjelenik a front, ez egy másik magyarázat (a hátoldalon), amely fogadja az eseményt (úgy tűnik véletlen ).

Nem találtunk semmilyen módon küldeni az esemény az első kommentár. Nem tudom elhinni ezt a hibát / problémát nem rendelkezik megoldás!

Z rendelési és megrendelése átfedő kommentárok kérdésre StackOverflow nem segített sokat.

Kérjük, minden ötlet üdvözlendő (még piszkos megoldások)!

Itt van az én-kód (nem divatos, nagyon gyakori):

CustomAnnotation.h

@interface CustomAnnotation : NSObject <MKAnnotation> {
   @private
   CustomAnnotationView* view;
}

    @property (nonatomic, retain) CustomAnnotationView* view;

@end

CustomAnnotation.m

@implementation CustomAnnotation

@synthetize view;

CustomAnnotationView.h

@interface CustomAnnotationView : MKAnnotationView {
}

@end

CustomAnnotationView.m

@implementation CustomAnnotationView

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
// Do something related to the annotation tapped
}

@end

Fő osztály ... // A jelölések hozzá, és néhány közülük átfedi másokkal.

- (void)addAnnotation:(CustomAnnotation*)annotation {
    [map addAnnotation:annotation];
}

...

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {

    NSString* identifier = getIdentifierFromAnnotation(annotation);
    CustomAnnotationView* view;
    if(!(view = (CustomAnnotationView*)[map dequeueReusableAnnotationViewWithIdentifier:identifier])) {
        view = [[CustomAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier: identifier];
        [(CustomAnnotation*)annotation setView:view];
        [view release];
    }
    return view;
}
A kérdést 18/03/2010 16:07
a forrás felhasználó
Más nyelveken...                            


4 válasz

szavazat
2

Végül a legjobb módja találtam, és hogy elkerülhető veszíti térkép lehetőséggel felszerelve, hogy:

  • hagyja, hogy a kapcsolatot hallgatót CustomAnnotationView (touchesEnded) (minden kommentár)

  • vételekor érintési esemény, át az esemény fő osztály

  • fő osztály hurkokkal kommentárok és tartja a jelölést, hogy jó helyen (érintési esemény a kommentár keret), és amely előtt

Ez elég jól működik.

Válaszolt 22/04/2010 12:04
a forrás felhasználó

szavazat
0

Adtam a UITapGestureRecognizer a nézetet az elején és hogy megoldotta a kérdés számomra.

Az Ön esetében, hozzátéve, egy gesztus felismerő hogy CustomAnnotationView kell megoldani a problémát.

Válaszolt 15/12/2011 15:04
a forrás felhasználó

szavazat
0

Miután az Alexandre válasza, kikapcsoltam az én egyéni MKAnnotationViews tárgyak

annView.enabled = NO

így nem reagálnak a MKMapView alapértelmezett válasszuk viselkedés, és végrehajtani a custom MKAnnotationView a következő:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
 self.enabled = YES;
 [(MKMapView*)self.superview selectAnnotation:self.annotation animated:NO];
}

Ez a megoldás remekül működik iOS 4. Úgy tűnik, mint kikapcsolni a MKAnnotationView nem tiltja le a userInteractionEnabled, míg az iOS 3 igen. Még mindig keresi a megoldást iOS 3 ...

EDIT : valóban, úgy tűnik, ez egy hiba az iOS 4.1. Az iOS 4.2 letiltása pin is letiltja az érintőképernyő eseményeket. Ezért ez a módszer csak akkor működik, 4.1 és esetleg 4,0.

Válaszolt 21/10/2010 06:47
a forrás felhasználó

szavazat
0

Lásd a megoldást erre a kérdésre . Alapvetően akkor létrehozhat egy átlátszó UIView amely eltéríti az összes érinti. Még nem próbáltam, de ez lehet több baj, mint amennyit ér, ha újraimplementálni összes kétujjas zoom funkciót MKMapView.

Ha két (vagy több) MKAnnotations együtt található akkor többször érintse meg a gombot a kettő között. Hogy kell dolgozni anélkül, hogy az alkalmazás módosításait.

Válaszolt 21/04/2010 15:04
a forrás felhasználó

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