Mam MKMapView
, który ma bardzo dziwny problem, który jest trudny do wyjaśnienia. Mam zapisaną między sesjami MKOverlay
, zapisując punkty nakładki w pliku i ładując nakładkę w postaci viewDidLoad
. Więc tu jest problem:MKOverlay nakłada wszystko w dziwnych okolicznościach tylko na ios5?
Kroki
- dodam
MKOverlay
doMKMapView
- na drugim lub trzecim biegu po dodaniu
MKOverlay
do mapy wszystko na mapie zostaje nałożony przez nakładki ten sam kolor jako ten, który dodałem. Wszystko na mapie, z wyjątkiem widoku mapy, który można zobaczyć po załadowaniu widoku.
Inne dziwne rzeczy:
- Ten problem występuje tylko wtedy, gdy jest ustawiony na
mapView.showsUserLocation
prawdziwej - Ten problem występuje tylko na
iOS5
. Wszystko działa poprawnie naiOS6
. - Jeśli pomniejszysz kolorową nakładkę, ponownie zmienisz widoczną część mapy, aby wypełnić mapę na nowym poziomie, na który pomniejszałeś.
Ten facet ma ten sam problem, chociaż jego rozwiązanie nie działa dla mnie.
Trouble with overlay using MKPolyline & MKPolylineView
Oto niektóre z moich kodu:
-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
MKPinAnnotationView *pinView = nil; //switch this to MKAnnotationView and use .image property if pins need to be images
if(annotation == self.startingPin || annotation == self.endingPin){
static NSString *defaultPinID = @"com.MagnusDevelopment.pin";
pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
if (pinView == nil)pinView = [[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:defaultPinID];
pinView.canShowCallout = YES;
pinView.animatesDrop = TRUE;
if(annotation == self.startingPin){
//starting pin
pinView.pinColor = MKPinAnnotationColorGreen;
}else{
//ending pin
pinView.pinColor = MKPinAnnotationColorRed;
}
}
return pinView;
}
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
MKPolylineView *aView = [[MKPolylineView alloc] initWithPolyline:(MKPolyline *)overlay];
aView.lineWidth = 7.0;
aView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.6];
return aView;
}
Kod nazywany gdy widok ładunki, mam rejestrowane współrzędne, które są dodawane do tablicy polilinii tuż przed dodaniem ich i wszystko jest w porządku i dandy!
NSInteger numberOfSteps = pointsArray.count;
NSLog(@"number of steps: %i",numberOfSteps);
CLLocationCoordinate2D coordinates[numberOfSteps];
for (NSInteger index = 0; index < numberOfSteps; index++) {
CLLocation *location = [pointsArray objectAtIndex:index];
CLLocationCoordinate2D coordinate = location.coordinate;
coordinates[index] = coordinate;
}
MKPolyline *polyLine = [MKPolyline polylineWithCoordinates:coordinates count:numberOfSteps];
[self.mainMap addOverlay:polyLine];
Oto obraz tego, co dzieje się, gdy pojawi się nakładka i patelnie użytkownika do siebie na mapie: Wszelkie pomysły o czym jest problem?
Problem nadal występuje ... – Shredder2794
Hm, kiedy tworzysz mapę i linie? Ponieważ powiedziałeś, że dzieje się to tylko wtedy, gdy lokalizacja użytkownika jest włączona, spróbuj zbudować mapę i polilinie podczas viewWillAppear widoku kontenera mapy, a następnie ustaw lokalizacjęUserLocation mapy na YES podczas viewDidAppear. – poetmountain
To działa! Dziękuję bardzo! Powinieneś edytować swoją odpowiedź, aby pasowała do odpowiedzi, którą mi dałeś w tych komentarzach dla przyszłych ludzi z tym problemem! – Shredder2794