2012-10-04 13 views
5

Użyłem następującego kodu do powiększenia widoku mapy, aby wszystkie adnotacje były wyświetlane jednocześnie w widoku przy optymalnym poziomie powiększenia. Ale w IOS 6 wydaje się, że istnieje pewien problem z poziomem powiększenia. Testując kilka przypadków, stwierdziłem, że 1.1. Jeśli kontakty są w USA, po załadowaniu mapy jest powiększanie w innym miejscu. 2. Poziom powiększenia wydaje się być poprawny w Wielkiej Brytanii (o ile testowałem). 3. Po dodaniu kontaktów z Wielkiej Brytanii i Stanów Zjednoczonych kontakty w Wielkiej Brytanii są prawidłowo powiększane, ale kontakty z USA są poza zasięgiem. Ale niewielkie przesunięcie sprawi, że wszystkie kontakty zmieszczą się w widoku i zostaną odpowiednio powiększone.Obojętne zachowanie poziomu powiększenia w widoku mapy IOS 6

-(void)zoomToFitMapAnnotations:(MKMapView*)mapViews insideArray:(NSArray*)anAnnotationArray 
{ 
if([mapViews.annotations count] == 0) return; 

CLLocationCoordinate2D topLeftCoord; 
topLeftCoord.latitude = -90; 
topLeftCoord.longitude = 180; 

CLLocationCoordinate2D bottomRightCoord; 
bottomRightCoord.latitude = 90; 
bottomRightCoord.longitude = -180; 

for(MKPointAnnotation* annotation in anAnnotationArray) 
{ 
    topLeftCoord.longitude = fmin(topLeftCoord.longitude, annotation.coordinate.longitude); 
    topLeftCoord.latitude = fmax(topLeftCoord.latitude, annotation.coordinate.latitude); 

    bottomRightCoord.longitude = fmax(bottomRightCoord.longitude, annotation.coordinate.longitude); 
    bottomRightCoord.latitude = fmin(bottomRightCoord.latitude, annotation.coordinate.latitude); 
} 

MKCoordinateRegion region; 
region.center.latitude = topLeftCoord.latitude - (topLeftCoord.latitude - bottomRightCoord.latitude) * 0.5; 
region.center.longitude = topLeftCoord.longitude + (bottomRightCoord.longitude - topLeftCoord.longitude) * 0.5; 
region.span.latitudeDelta = fabs(topLeftCoord.latitude - bottomRightCoord.latitude) * 1.1; // Add a little extra space on the sides 
region.span.longitudeDelta = fabs(bottomRightCoord.longitude - topLeftCoord.longitude) * 1.1; // Add a little extra space on the sides 

region = [mapViews regionThatFits:region]; 
[mapView setRegion:region animated:YES]; 
} 

Po załadowaniu MapView z adnotacji, w losowych przypadkach dostaję następnej beli

<GEOTileSource: 0x108f6470>: Error downloading tiles Server Error: Error Domain=GEOErrorDomain Code=-204 "The operation couldn’t be completed. (GEOErrorDomain error -204.)" UserInfo=0x18a5b9c0 {UnderlyingErrors=(
"Error Domain=GEOErrorDomain Code=-204 \"The operation couldn\U2019t be completed. (GEOErrorDomain error -204.)\"" 
)} 

Co może być tego przyczyną i jak można go poprawić? Nie można znaleźć niczego przydatnego po przejściu do Google.

Nie jestem w stanie zidentyfikować żadnego szczególnego wzorca dla tej niespójności powiększania. Powyższy kod działa poprawnie w poprzednich wersjach IOS.

Odpowiedz

2

Prawie zaproponowałem nagrodę za twoje pytanie, ale potem zauważyłem, że dzięki nowym mapom w iOS6 nie można pomniejszyć widoku całego świata (spróbuj sam w aplikacji map). Jest to maksymalny poziom zoom, który można dowiedzieć się, komentując swoje pętlę for i zalogowaniu następująco:

NSLog(@"region.span.latitudeDelta = %f", region.span.latitudeDelta); 
NSLog(@"longitudeDelta = %f", region.span.longitudeDelta); 

[map setRegion:region animated:NO]; 

NSLog(@"region.span.latitudeDelta = %f", map.region.span.latitudeDelta); 
NSLog(@"longitudeDelta = %f", map.region.span.longitudeDelta); 

Wyjście wygląda następująco:

region.span.latitudeDelta = 179.283409 
longitudeDelta = 360.000000 
region.span.latitudeDelta = 76.269114 
longitudeDelta = 98.437499 
+0

Jak mogę rozwiązać ten problem.? –

+0

To jest pytanie koncepcyjne. Możesz na przykład spróbować pokazać maksymalnie te lokalizacje, które są najważniejsze dla użytkownika. To zależy od twojego przypadku użycia. Możesz również powrócić do statycznych map Google lub dodać kolejną usługę map do swojej aplikacji. To zależy od Ciebie. – borisdiakur

+0

Czy nie jest tak, że mogę to zrobić za pomocą mapy google –

Powiązane problemy