iOS 7-

2013-10-04 31 views
7

kullanımdan kaldırıldı region.center Benim iOS uygulaması için bu kodu vardır: Ben iOS 7 Uygulamamı yükseltilmiş zamaniOS 7-

NSString *location = [[NSString alloc] initWithFormat:@"%@, %@", [self.campus campusStreetAddress], [self.campus campusCityStateZip]]; 
CLGeocoder *geocoder = [[CLGeocoder alloc] init]; 
[geocoder geocodeAddressString:location 
      completionHandler:^(NSArray* placemarks, NSError* error){ 
       if (placemarks && placemarks.count > 0) { 
        CLPlacemark *topResult = [placemarks objectAtIndex:0]; 
        MKPlacemark *placemark = [[MKPlacemark alloc] initWithPlacemark:topResult]; 
        MKCoordinateRegion region = self.campusMap.region; 
        region.center = placemark.region.center; //DEPRECATED iOS 7 
        region.span.longitudeDelta /= 1500; 
        region.span.latitudeDelta /= 1500; 
        [self.campusMap setRegion:region animated:NO]; 
        [self.campusMap addAnnotation:placemark]; 
       } 
      } 
]; 

Fakat, placemark.region.center kullanımdan kaldırılmıştır. Kullanmam gereken bir değiştirme var mı? Bu, bir görünümünde bir harita oluşturmak için uygun bir yöntem midir?

Teşekkürler!

cevap

21

bu deneyin: sadece bölgenin merkezini istiyorsanız

region.center = [(CLCircularRegion *)placemark.region center]; 
+0

Mükemmel çalıştı, teşekkürler! – jordangrogan

+4

Bu çözüm hakkında beni endişelendiren tek şey, CLPlacemark'ın bölge mülkünün mutlaka bir CLCircularRegion olacağına dair bir garanti olmamasıdır. Muhtemelen şimdilik işe yarıyor ama ... Sanırım bölgenin merkezi özelliğini kullanmadan önce bir CLCircularRegion olduğunu doğrulamayı ve kabul edilmezse alternatif bir değer bulmayı tercih ederim. –

+0

@DougKnowles ile aynı fikirdeyim şimdi daha zarif bir çözüm yok mu? –

8

kullanabilirsiniz:

region.center = placemark.location.coordinate ait

+0

Aslında yer işareti merkezini kullandığımda ve konum koordinatlarını kullandığımda fark enlem/boylam cevapları alıyorum. baskı .center let merkez = (işaretleri! CLCircularRegion olarak? [0] .region) (yer işaretleri? [0] .location? .coordinate ?? "???") fark farklı üretmek için yeterince büyüktür adresleri. – mark

0

Kombinasyon Heesien ve other answers ve biraz deneme.

- (void)centerMapAroundPlacemark:(MKPlacemark *)placemark 
{ 
    CLRegion *region = placemark.region; 

    if ([region isKindOfClass:[CLCircularRegion class]]) 
    { 
     [self centerMapAroundCircularRegion:(CLCircularRegion *)region 
          centerCoodinate:placemark.location.coordinate]; 
    } 
    else 
    { 
     [self centerMapAroundCoorinate:placemark.location.coordinate]; 
    } 
} 

- (void)centerMapAroundCircularRegion:(CLCircularRegion *)circularRegion 
{ 
    MKCoordinateRegion coordinateRegion = 
    MKCoordinateRegionMakeWithDistance(circularRegion.center, 
             circularRegion.radius, 
             circularRegion.radius); 

    [self.mapView setRegion:coordinateRegion animated:YES]; 
} 

- (void)centerMapAroundCircularRegion:(CLCircularRegion *)circularRegion 
         centerCoodinate:(CLLocationCoordinate2D)centerCoodinate 
{ 
    // Only user the radius of region for an appropriate zoom level. 
    // The center of the region is not accurate. 
    // To see this search for 'Bath, UK' 

    MKCoordinateRegion coordinateRegion = 
    MKCoordinateRegionMakeWithDistance(centerCoodinate, 
             circularRegion.radius, 
             circularRegion.radius); 

    [self.mapView setRegion:coordinateRegion animated:YES]; 
} 
İlgili konular