Planuję ponad 500 punktów na mapie za pomocą zestawu mapkit. Powiększanie jest trochę nerwowe w porównaniu do natywnej aplikacji mapy google. Odkryłem, co powoduje powolność. Dodaję własne adnotacje, tak że mogę później dodać różne kolory pin i przyciski do widoków szczegółowych:Rozwiązywanie problemów z mapami wydajności
- (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;
}
Gdybym skomentuj powyższy kod, wszystko działa bez zarzutu. Bardzo gładka z powiększaniem/pomniejszaniem. Czy powinienem dodawać adnotacje inaczej, aby zwiększyć wydajność?
Czy możesz wyjaśnić, w jaki sposób byłbyś w stanie dokonać tego rodzaju leniwego ładowania? – user230949
MKMapView dostarcza wiadomości do swojego delegata za każdym razem, gdy mapa się przewija. Za każdym razem, gdy to się stanie, przechowuj delty szerokości i długości geograficznej widoku, aby znać sprzedaż mapy. Przed zapisaniem wartości należy sprawdzić, czy skala mapy urosła lub zmalała wystarczająco, aby dostosować liczbę adnotacji. Jeśli tak, po prostu wykonaj obliczenia poziomu szczegółowości. Przeprowadź listę adnotacji i połącz te, które znajdują się w pewnej odległości od siebie, w jedną nową adnotację reprezentującą wszystkie. Jeśli użytkownik ponownie się przybliży, zamień go na oryginalne adnotacje. – VictorB