2012-10-04 16 views
5

Harita görünümünü yakınlaştırmak için aşağıdaki kodu kullanıyorum, böylece tüm ek açıklamalar en uygun zum seviyesinde aynı anda görüntülenecektir. Ancak IOS 6'da, yakınlaştırma seviyesinde bir sorun var gibi görünüyor. Birkaç durumun sınanması durumunda, bu numarasını buldum. 1. Kişiler ABD'deyse, harita yüklendiğinde, başka bir yere yakınlaştırıyor. 2. Yakınlaştırma seviyesi İngiltere bölgesinde (test ettiğim kadarıyla) doğru görünüyor. 3. Hem Birleşik Krallık hem de ABD'den kişileri eklediğimde, Birleşik Krallık kişileri haklı olarak yakınlaştırılıyor, ancak ABD kişileri görüş alanının dışında. Ancak hafif bir kaydırma, tüm kişilerin görüşe sığmasını ve düzgün bir şekilde yakınlaştırılmasını sağlar. rasgele durumlarda ek açıklamalarla MapView yükledikten sonraIOS 6 mapview'da yakınlaştırma düzeyinin kayıtsız davranışı

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

, ben şu günlüğünü

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

olsun ne bu ve nasıl düzeltebilir sebebi ne olabilir? Google'dan sonra yararlı bir şey bulamadı.

Bu yakınlaştırma tutarsızlığı için belirli bir deseni tespit edemiyorum. Yukarıdaki kod önceki IOS sürümlerinde düzgün çalışıyor.

cevap

2

Neredeyse soruna bir ödül teklif ettim ama sonra fark ettim ki, iOS6'daki yeni haritalar sayesinde tüm dünyayı görebilmek için uzaklaştıramayacaksın (haritalar uygulamasında kendin dene). Çıktı aşağıdaki gibi görünür

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

:

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

Bu sorunu nasıl çözebilir Eğer for döngü dışında yorum ve bu giriş yaparak anlayabiliriz maksimum yakınlaştırma düzeyi yoktur.? –

+0

Bu, kavramsal bir sorudur. Örneğin, kullanıcı için en önemli olan maksimum yerleri göstermeye çalışabilirsiniz. Aslında kullanım durumunuza göre değişir. Ayrıca, Google statik haritalarına geri dönmek veya uygulamanıza başka bir harita hizmeti eklemek isteyebilirsiniz. Sana kalmış. – borisdiakur

+0

Yine de google haritalar –