2012-11-13 11 views
7

Mam dwa pytania. Po pierwsze, kiedy przydzielę pamięć dla współrzędnych, zobacz poniższy kod, czy muszę zwolnić pamięć (współrzędne)? Po drugie, jak widać poniżej kodu, otrzymuję nakładkę i dodam mapę. Jednak istnieją różne znaczniki czasu, które przekazują współrzędne i powinny aktualizować mapę. Podobnie jak mapa radaru zmieniająca kształt nakładki z różnymi znacznikami czasu. Na początku bardzo dobrze się aktualizuje; jednak gdy użytkownik pomniejszy i powiększy, zaczyna migać lub migać. Zastanawiam się, dlaczego to migotanie ma miejsce? Ktoś już wcześniej doświadczył tego problemu?Flickering MapOverlay po pomniejszeniu i powiększeniu-iOS

NSArray *ants = [mapView overlays]; 
for(bb = 0; bb < [polygonArray count]; bb++){ 
     int attr=[[idArray objectAtIndex:bb]floatValue]; 


     coords = malloc(sizeof(CLLocationCoordinate2D) * [[polygonArray objectAtIndex:bb] count]); 
     for (int a = 0;a < [[polygonArray objectAtIndex:bb] count]; a++){ 
      coords[a].latitude = [[[[polygonArray objectAtIndex:bb]objectAtIndex:a]objectAtIndex:0]doubleValue]; 
      coords[a].longitude = [[[[polygonArray objectAtIndex:bb]objectAtIndex:a]objectAtIndex:1]doubleValue]; 
     } 
     polygon = [[MKPolygon alloc]init]; 
     polygon = [MKPolygon polygonWithCoordinates:coords count:[[polygonArray objectAtIndex:bb]count]]; 
     //free(coords); 
     [previousPolygons addObject:polygon]; 

      } 
     [mapView addOverlay:polygon]; 
     } 

    } 
[mapView removeOverlays:ants]; 
+1

Tak, musisz zwolnić pamięć, którą wymazałeś, ale nie powinieneś zadawać tego samego pytania dwa razy na SO lub zadawać dwa pytania na jednej stronie, ponieważ możesz uzyskać odpowiedź dla każdego i możesz oznaczyć tylko jedno jako poprawne. – Craig

Odpowiedz

2

Pobierz Jabłka

BreadCrumbs Demo

App.
Za pomocą tej wersji demonstracyjnej zobaczysz zalecaną technikę, która wykona zadanie.
Użyłem tej wersji demonstracyjnej w mojej aplikacji i działało jak czar.

Podejście z MkPolygon nie działa dobrze w przypadku dużych wielokątów lub zmieniających się wielokątów.

+0

Przetestowałem mój kod napisany powyżej z iphone 4s to nie drgnął, raz testowałem z iphone 5 to migotanie ze względu na szybkość procesora. Nie wiem, jak zapobiec temu migotaniu! Czy myślisz, że jeśli zaimplementuję przykład BreadCrumb, mój problem zniknie? –

+0

Wypróbuj wersję demonstracyjną programu breadcrumb na iPhone 5 i spójrz na siebie. Wierzę, że tak, to będzie dobry pomysł, aby użyć techniki w bułkach tartych – AlexWien

+0

Ah teraz widzę, z Mkpolygon to nie zadziała, to będzie migotać! – AlexWien

2

Przetestowałem wersję demonstracyjną BreadCrumbs na iOS 6.1 (iPad 3) i migocze. To błąd nowego MKMapView (smutny). Przesłałem błąd do Apple.

+0

Mamy również ten problem. Aby sprawdzić, mamy ten sam problem: Zauważyliśmy, że ekran migocze (przerysowuje) podczas dodawania nakładki do MKMapView, niezależnie od tego, czy dodamy MKPolygon, czy naszą własną nakładkę wieloboków. Zauważyliśmy również, że dzieje się tak tylko na iPadach z wyświetlaczem Retina i pomiędzy poziomem zoomu N.0001 a N.5 (nie ma problemu między N.5 a N.0). Czy masz link do swojego problemu w narzędziu do śledzenia problemów, abyśmy mogli dać mu +1? –

+0

W naszym przypadku dzieje się to zarówno w systemie iOS 5.1, jak i 6.1. –

+0

Mam ten sam problem - migotanie zaczyna się od pewnego poziomu powiększenia, wcześniej - bez problemu. Na moim iPhone6 ​​z systemem iOS 8.3 nie mam problemu, na moim iPadzie Mini 1 z systemem iOS 8.3 migocze. Ktoś znalazł rozwiązanie? – user1057831

Powiązane problemy