我知道iPhone模拟器默认为美国某个地方,但这是否意味着永远不会调用didUpdateToLocation
?所有被调用的都是didFailWithError
,经过很长一段时间也是如此。这个方法的超时时间是多少?
P.S。 Android在这方面要好得多,让你伪造位置。
答案 0 :(得分:6)
如果你正在使用iPhone simulator
,那么这是didUpdateToLocation
永远不会调用,因为在模拟器的情况下无法进行位置更新,我在我的一个应用程序中遇到了相同的情况(模拟器测试)变得困难),所以我在didFailWithError
方法本身中定制了模拟器的经度和纬度。如下所示
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError*)error{
if( [(NSString *)[[UIDevice currentDevice] model] isEqualToString:@"iPhone Simulator"] ){
lat = 50.748129f;
log = -2.970836f;
return;
}
[[LocationManager sharedManager].locationManager stopUpdatingLocation];
[LocationManager sharedManager].isUpdating = NO;
}
现在,您可以使用此位置测试您的应用,就像设备搜索当前位置时一样。
希望你得到我想说的话
祝你好运!
答案 1 :(得分:3)
您也可以在模拟器中获得didUpdateToLocation更新。
我在主循环的viewDidLoad中添加了这个:
self.locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
结果的结果:
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation {
// Display location in Log
NSLog(@"Lat= %s Lon=%f", newLocation.coordinate.latitude,
newLocation.coordinate.longitude);
// Stop updating, when one is enough
[locationManager stopUpdatingLocation];
}
希望这有帮助。
答案 2 :(得分:1)
您无法在iphone模拟器上获取位置更新。
答案 3 :(得分:1)
iOS 5现在将位置作为模拟器中的可修改参数。在Simulator中,选择菜单Debug - >位置,并选择其中一个静态或动态位置路线。
Xcode调试器还允许您更改位置 - 查找播放/暂停/步骤按钮旁边的小位置箭头,以便在Xcode中从右侧更改位置。
答案 4 :(得分:1)
我发现在模拟器上没有调用 didUpdateLocations 这是一个奇怪的错误。如果您正在使用自定义位置(就像我一样),在启动模拟器的新实例后,iOS将无法返回自定义位置,直到您执行此操作:
选择“Apple”作为您的位置: 调试 - >位置 - >苹果
然后切换回您的自定义位置: 调试 - >位置 - >自定义位置