Ios 地理编码方法看起来不错,但我总是得到0作为坐标

Ios 地理编码方法看起来不错,但我总是得到0作为坐标,ios,ios7,mapkit,geocoding,Ios,Ios7,Mapkit,Geocoding,这不应该这么难。。。我只是尝试对地址字符串进行地理编码,以便在viewDidLoad上缩放到地图上的地址,但每次运行地理编码方法时,我的lat和long都会得到0 CLGeocoder *geocoder = [[CLGeocoder alloc] init]; [geocoder geocodeAddressString:addressOfSelected completionHandler:^(NSArray *placemarks, NSError *error) { if

这不应该这么难。。。我只是尝试对地址字符串进行地理编码,以便在
viewDidLoad
上缩放到地图上的地址,但每次运行地理编码方法时,我的lat和long都会得到0

CLGeocoder *geocoder = [[CLGeocoder alloc] init];

[geocoder geocodeAddressString:addressOfSelected completionHandler:^(NSArray *placemarks, NSError *error) {

     if (error) {
         NSLog(@"Geocode failed with error: %@", error);
         return;
     }

     if (placemarks && placemarks.count > 0)
     {
         CLPlacemark *placemark = placemarks[0];

         CLLocation *location = placemark.location;
         self.shackCoords = CLLocationCoordinate2DMake(location.coordinate.latitude, location.coordinate.longitude);
     }
}];

MKCoordinateRegion region;
region.center.latitude = self.shackCoords.latitude;
region.center.longitude = self.shackCoords.longitude;
region.span.latitudeDelta = .05;
region.span.longitudeDelta = .05;

[self.mapView setRegion:region];

shackCoords
只是一个
CLLocationCoordinate2D

对我来说很有用。也许你的地址无法进行地理编码?我正在ios模拟器中运行它,这可能是个问题吗?将你的setRegion代码移动到地理编码器的完成块内。是的,在设置self.shackCoords之后。geocoder方法异步运行。请注意,您可能应该
dispatch\u async
到主队列,或者
performSelectorOnMainThread:withObject:waitUntilDone:
在地图视图上设置区域。在后台线程上更改UIView状态是个坏主意。