Toubleshooting mapkit teljesítmény

szavazat
8

Én rajzoló több mint 500 pontot a térképen a mapkit. Nagyítás egy kicsit ideges, mint a natív google térkép app. Rájöttem, hogy mi okozza a lassúság. Adok hozzá egyéni jelölések, így én is később hozzá különböző pin színek és gombok részletes nézetek:

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(AddressNote *) annotation {
    MKPinAnnotationView *annView=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@currentlocation];
    annView.pinColor = MKPinAnnotationColorGreen;
    annView.animatesDrop=TRUE;
    annView.canShowCallout = YES;
    annView.calloutOffset = CGPointMake(-5, 5);
    return annView;
}

Ha megjegyzésbe a fenti kódot, minden rendben. Nagyon sima zoom in / out. Kéne hozzá kommentárokat másképp, hogy növeljék a teljesítményt?

A kérdést 08/02/2010 03:12
a forrás felhasználó
Más nyelveken...                            


5 válasz

szavazat
6

500 kommentárok talán túl sok, de nem olyan sok, hogy a teljesítmény szenved, ha csak megtekintésére néhány közülük. Azonban, ha kell, használja dequeueing a kommentárokat a teljesítmény javítása érdekében

- (MKAnnotationView *)mapView:(MKMapView *)mapView
            viewForAnnotation:(id <MKAnnotation>)annotation
{
    MKPinAnnotationView *view = nil;
    if (annotation != mapView.userLocation) {
        view = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"identifier"];
        if (nil == view) {
            view = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"identifier"] autorelease];
        }
        [view setPinColor:MKPinAnnotationColorGreen];
        [view setCanShowCallout:YES];
        [view setAnimatesDrop:NO];
    }
    else {
        // Do something with the user location view
    }
    return view;
}

Továbbá, 500 csapok, a csepp animáció hosszú időt vesz igénybe, hogy befejezze. Meg kell viszont, hogy a le[view setAnimatesDrop:NO]

Válaszolt 08/02/2010 06:48
a forrás felhasználó

szavazat
3

Írtam egy iPhone app az ügyfél, és mi benne boltkeresők az egyik kereskedelmi márkák. Ez magában foglalja a 501 helyen, és bár az animáció lehet egy kicsit döcögős, ha kicsinyített megtekintheti az egész Egyesült Államokban, ez tökéletesen nagyított, hogy az állami szinten, ahol csak néhány csapok témához.

A kulcsok:

  • Nagyítsa a felhasználót a jelenlegi helyen, mielőtt hozzáadja a kommentárok.
  • Az újrafelhasználás kommentár nézetek dequeueReusableAnnotationViewWithIdentifier:.

Ahhoz, hogy az első pontot, akkor be kell kapcsolnia a helyfrissítések és állítsa be a zászló, amikor megkapja az első. Animáld a térképen arra a helyre egy régió span, hogy van értelme az alkalmazásának, majd mapView:regionDidChangeAnimated:ellenőrizze, hogy ha továbbra is hozzá kell adnia a kommentárokat , és hogy a jelenlegi helyét frissült a hívás előtt addAnnotation:.

Ha nem tudja, vagy nem akarja, hogy nagyítja a felhasználó tartózkodási helyét, meg tudja szűrni a kommentárok látható a legmagasabb szinten, és csak akkor szabad további jelölések a felhasználó nagyít?

By the way, azt hiszem, van egy memóriavesztés a kódot írt módon. Akkor is, ha nem akarjuk használni a dequeuing mechanizmus, a kilátás visszatérsz mapView:viewForAnnotation:kell autoreleased.

Válaszolt 10/02/2010 16:28
a forrás felhasználó

szavazat
2

Azt hiszem St3fan helyes. Elméletileg ha csak tartani hozzá kommentárokat a térképet, és hagyja, hogy a néző nyél kijelző őket, de a valóság az, hogy ez jobb, ha folyamatosan a visszaszámlálást egy kicsit, 500 a képernyőn egyszerre lenne túl sok látni egyébként.

Azonban van még egy lépés, hogy megpróbálja -, hogy minden a kommentár nézetei átlátszatlan YES az értéke így:

annView.opaque = YES; 
Válaszolt 08/02/2010 05:22
a forrás felhasználó

szavazat
1

Ha nem távolítjuk el kommentárok nem látott a felhasználó elől, hogy az egy dolog, hogy nem útján MKMapViewDelegate. Ha a teljesítmény, ami megalázó, ha a felhasználó zoom-out országos szinten érdemes bemutatni összesített információk nagyítási szinteken> néhány const értéket, pl 30 helyett kommentárok 10 négyzet mérföld mutatják egyetlen magyarázat, mint a [30 something].

Válaszolt 29/03/2010 15:09
a forrás felhasználó

szavazat
1

Úgy hangzik, hogy ha 500 térkép pontot, amely részben a térkép méretét az iPhone képernyőjén nincs értelme. Nincs mód arra, hogy szemléltesse, hogy akár kattintson jobb kommentár.

Nem megnézi a nagyítási szinten a térkép közepén, majd úgy dönt, hogy csak hozzá egy részhalmaza kommentárok a térkép?

Azt hiszem, láttam más alkalmazások ezt is.

Válaszolt 08/02/2010 04:29
a forrás felhasználó

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