繁体   English   中英

iOS 7-不建议使用region.center

[英]iOS 7 - region.center deprecated

我的iOS应用具有以下代码:

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

但是,当我将应用程序升级到iOS 7时,placemark.region.center已被弃用。 我应该使用替代品吗? 这甚至是在视图中创建地图的适当方法吗?

谢谢!!

尝试这个:

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

如果您只想区域的中心,可以使用:

region.center = placemark.location.coordinate

Heesien的答案其他答案的结合以及一些实验。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM