我是iphone开发的新手。我正在创建一个地图应用程序。我在头文件中使用了以下代码
@interface BrusMapSubviewcontroller : UIViewController<UIApplicationDelegate,CLLocationManagerDelegate> {
IBOutlet MKMapView *mapView;
IBOutlet UIToolbar *toolbar;
IBOutlet UIButton *location;
IBOutlet UIButton *backtocampus;
CLLocationManager *locationManager;
}
@property(retain,nonatomic) IBOutlet UIToolbar *toolbar;
@property(retain,nonatomic) IBOutlet UIButton *location;
@property(retain,nonatomic)IBOutlet UIButton *backtocampus;
@property (nonatomic, retain) CLLocationManager *locationManager;
-(IBAction) gosearch : (id) sender;
-(IBAction) backtocampus: (id)sender;
在实现类
中 -(IBAction) gosearch : (id) sender{
self.locationManager = [[[CLLocationManager alloc] init] autorelease];
self.locationManager.delegate = self;
[locationManager startUpdatingLocation];
NSLog(@"inside go search");
}
-(IBAction) backtocampus: (id)sender{
MKCoordinateRegion region;
region.center.latitude=41.825672;
region.center.longitude=-71.402695;
region.span.latitudeDelta=0.001551;
region.span.longitudeDelta=0.005493;
mapView.mapType=MKMapTypeHybrid;
mapView.region=region;
NSLog(@"inside back to campus");
}
- (void)locationManager: (CLLocationManager *)manager
didUpdateToLocation: (CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
[manager stopUpdatingLocation];
NSLog(@"inside update");
printf("\n Latitude = %s\n Longitude = %s",[NSString stringWithFormat:@"%.7f",newLocation.coordinate.latitude],[NSString stringWithFormat:@"%.7f",newLocation.coordinate.longitude]);
}
- (void)locationManager: (CLLocationManager *)manager
didFailWithError: (NSError *)error
{
printf("\nerror");
}
当我在模拟器中运行时“内部更新”打印在控制台和long和lat值中。但是如果我在ipod中运行“内部搜索”单独打印在控制台中。为什么模拟器和设备中存在差异输出。谢谢。
答案 0 :(得分:1)
如果我理解你的要求,那么从模拟器到设备的区别是:模拟器预设为CA位置的Apple。因此,当您在设备上运行应用程序时,您将获得当前位置,当您在模拟器上运行应用程序时,您将获得位于CA位置的Apple。
答案 1 :(得分:1)
模拟器预设为加利福尼亚州的某个位置(~37.3,-122.0),因此当您在模拟器上启动位置管理器时,您会立即使用预设位置呼叫didUpdateToLocation:fromLocation:。这是你从模拟器中获得的唯一位置。
在iPhone上,它可能需要几秒到几分钟才能拥有有效的GPS位置,因此在您看到“内部更新”消息或“错误”消息之前可能需要一些时间。但你最终应该得到一个。
您还可以更改distanceFilter和desiredAccuracy,以控制获取位置更新的频率。
答案 2 :(得分:0)
iPod没有嵌入GPS。所以我想它可能导致这种功能障碍。