2012-10-04 3 views
5

Ich habe den folgenden Code verwendet, um die Kartenansicht zu zoomen, so dass alle Anmerkungen in der Ansicht zur gleichen Zeit bei optimaler Zoomstufe angezeigt werden. In IOS 6 scheint jedoch ein Problem mit der Zoomstufe zu bestehen. Einige Fälle prüfend, fand ich, dass 1. Wenn die Kontakte in US sind, wenn die Karte geladen wird, zoomt er wo sonst. 2. Die Zoomstufe scheint im UK-Bereich korrekt zu sein (soweit ich getestet habe). 3. Wenn ich Kontakte aus Großbritannien und den USA einschließe, werden die UK-Kontakte richtig gezoomt, aber die US-Kontakte sind nicht mehr sichtbar. Durch einen leichten Swipe wird sichergestellt, dass alle Kontakte in die Ansicht passen und ordnungsgemäß gezoomt werden.Gleichgültiges Verhalten der Zoomstufe in IOS 6 Kartenansicht

-(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]; 
} 

Nach dem mapview mit Anmerkungen in zufälligen Fällen Laden bekomme ich folgendes Protokoll

<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.)\"" 
)} 

Was ist der Grund dafür sein könnte, und wie kann ich es beheben? Konnte nach dem googeln nichts hilfreiches finden.

Ich kann kein bestimmtes Muster für diese Zoom-Inkonsistenz identifizieren. Der obige Code funktioniert in früheren IOS-Versionen einwandfrei.

Antwort

2

Ich habe fast ein Kopfgeld auf Ihre Frage angeboten, aber dann habe ich festgestellt, dass Sie mit den neuen Karten in iOS6 nicht herauszoomen können, um die ganze Welt zu sehen (probieren Sie es selbst in der Karten App). Es gibt eine maximale Zoomstufe, die Sie kommentieren Sie Ihre for Schleife herausfinden können, und Protokollierung dieses:

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); 

Die Ausgabe sieht wie folgt aus:

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

Wie kann ich dieses Problem lösen.? –

+0

Dies ist eine konzeptionelle Frage. Sie können beispielsweise versuchen, ein Maximum an Orten anzuzeigen, die für den Benutzer am wichtigsten sind. Es hängt tatsächlich von Ihrem Anwendungsfall ab. Vielleicht möchten Sie auch auf Google Static Maps zurückgreifen oder Ihrer App einen weiteren Karten-Service hinzufügen. Es liegt an dir. – borisdiakur

+0

Ist es nicht sowieso, dass ich es mit den Google Maps –