gpt4 book ai didi

iphone - 如何等待位置管理器获取当前位置?

转载 作者:行者123 更新时间:2023-12-03 20:24:47 24 4
gpt4 key购买 nike

我正在开发一个 iPhone 应用程序,我想根据当前位置显示最近的餐馆为此,在 applicationDidFinishLaunching 中,我正在这样做:

self.locationManager = [[CLLocationManager alloc] init];

locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];



NSURL *url = [[NSURL alloc] initWithString:@"http://192.168.0.150/server1/Service.asmx/nearest?lat1=23.013163&lon1=72.559068"];
NSMutableURLRequest* request2=[NSMutableURLRequest requestWithURL:url];
[request2 setHTTPMethod:@"GET"];
[request2 setTimeoutInterval:10];
NSURLResponse *response=nil;
NSError *err=nil;
NSData *data1=[[NSURLConnection sendSynchronousRequest:request2 returningResponse:&response error:&err] retain];
if(data1 == nil)
{
UIAlertView* alert = [[UIAlertView alloc]initWithTitle:@"Alert" message:@"The network is not available.\n Please check the Internet connection." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];

}
else
{
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:data1];

//Initialize the delegate.
XMLParser *parser = [[XMLParser alloc] initXMLParser];

//Set delegate
[xmlParser setDelegate:parser];

//Start parsing the XML file.
@try {
BOOL success = [xmlParser parse];
if(success)
NSLog(@"No Errors");
else
NSLog(@"Error Error Error!!!");
}
@catch (NSException * e) {
NSLog(@"Exception in parsing %@ %@",[e name], [e reason]);
}
}

问题场景。

位置管理器开始更新位置

网络服务在此之前执行,因此我无法获取位置值。

我将 Web 服务调用放入委托(delegate)方法中,然后应用程序在 Web 服务执行之前启动。在委托(delegate)方法中,我在适当的字符串中设置纬度和经度。

问题是如何确保在位置管理器更新该位置之前不会调用该服务,然后将该位置传递给 Web 服务,然后调用该 Web 服务..

最佳答案

CLLocationManaged 有委托(delegate)方法。

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation

当 CLLocationManager 收到一些坐标时,它将被调用。或者

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error

当locationManager无法接收任何坐标时将调用它。或者当用户不允许找到当前位置时。另外,如果您不想收到更准确的结果,则应该调用 stopUpdatingLocation。

因此,您可以在委托(delegate)方法中发出请求,以确保仅在更新当前位置后才会调用该请求。

关于iphone - 如何等待位置管理器获取当前位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1635378/

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