在地图上获取当前位置时出错

时间:2010-02-17 18:32:36

标签: iphone maps

我是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中运行“内部搜索”单独打印在控制台中。为什么模拟器和设备中存在差异输出。谢谢。

3 个答案:

答案 0 :(得分:1)

如果我理解你的要求,那么从模拟器到设备的区别是:模拟器预设为CA位置的Apple。因此,当您在设备上运行应用程序时,您将获得当前位置,当您在模拟器上运行应用程序时,您将获得位于CA位置的Apple。

答案 1 :(得分:1)

模拟器预设为加利福尼亚州的某个位置(~37.3,-122.0),因此当您在模拟器上启动位置管理器时,您会立即使用预设位置呼叫didUpdateToLocation:fromLocation:。这是你从模拟器中获得的唯一位置。

在iPhone上,它可能需要几秒到几分钟才能拥有有效的GPS位置,因此在您看到“内部更新”消息或“错误”消息之前可能需要一些时间。但你最终应该得到一个。

您还可以更改distanceFilterdesiredAccuracy,以控制获取位置更新的频率。

答案 2 :(得分:0)

iPod没有嵌入GPS。所以我想它可能导致这种功能障碍。