gpt4 book ai didi

iphone - MKReverseGeocoder 委托(delegate)方法是否在单独的线程上工作?

转载 作者:行者123 更新时间:2023-12-01 19:21:35 26 4
gpt4 key购买 nike

我正在尝试在两个位置之间绘制路线。为此,我有两个 CLLocation 实例起点,终点。我想将这两个位置转换为两个对应的位置地址。之后我想从谷歌地图网络服务中获取所有路线点。下面的代码也是如此。

- (void)viewDidLoad{
[super viewDidLoad];
locations =[[NSMutableArray alloc]initWithCapacity:2];//For location Name
[self.mapView_MP setMapType:MKMapTypeStandard];
[self.mapView_MP setZoomEnabled:YES];
[self.mapView_MP setScrollEnabled:YES];
[self update:startPoint]; //MKReverseGeocoder start point
[self update:endPoint]; //MKReverseGeocoder end point

[self updateRoute];

}

- (void)update:(CLLocation*)loc{
MKReverseGeocoder *geoCoder = [[MKReverseGeocoder alloc] initWithCoordinate:loc.coordinate];


geoCoder.delegate = self;
[geoCoder start];

}
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark
{

NSMutableDictionary *cplace=[[NSMutableDictionary alloc]initWithDictionary:[placemark addressDictionary]];

// NSLog(@"The geocoder has returned: %@", [cplace objectForKey:@"FormattedAddressLines"] );
// NSLog(@"The geocoder has returned: %@", [cplace objectForKey:@"Street"] );
[locations addObject:[cplace objectForKey:@"SubAdministrativeArea"]];
NSLog(@"The geocoder has returned: %@", locations );
}
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFailWithError:(NSError *)error
{
NSLog(@"reverseGeocoder:%@ didFailWithError:%@", geocoder, error);
}

- (void)updateRoute {

self.responseData=[NSMutableData data];
NSLog(@" string Formate.................................===%@",locations);

NSURLRequest *request=[NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/directions/json?origin=%@&destination=%@&mode=driving&sensor=false", [locations objectAtIndex:0],[locations objectAtIndex:1]]]];
[[NSURLConnection alloc] initWithRequest:request delegate:self];
}

在 viewDidLoad 我按顺序调用方法
[self update:startPoint];      //MKReverseGeocoder start point  
[self update:endPoint]; //MKReverseGeocoder end point
[self updateRoute];

但不幸的是 [self updateRoute];正在执行第一个比较 MKReverseGeocoder委托(delegate)方法。在此方法中,位置数组为空。获得 EXEBADACCESS。我怎么能超过这个值。
内部 MKReverseGeocoder委托(delegate)方法我得到了位置名称。委托(delegate)方法正在执行任何其他线程。

最佳答案

MKReverseGeocoder在 iOS 5 中已弃用,因此您应该使用 CLGeocoder反而。

除此之外,是的,start方法是异步的,如文档中所述。这并不一定意味着您将在不同的线程上获得结果,但这意味着该方法通常会在结果可用之前返回。

您需要跟踪您的地理编码器才能调用您的 updateRoute两者都完成时的方法。

关于iphone - MKReverseGeocoder 委托(delegate)方法是否在单独的线程上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10189305/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com