地理位置仅显示全球地图
Posted
技术标签:
【中文标题】地理位置仅显示全球地图【英文标题】:Geolocation only shows global map 【发布时间】:2011-03-28 18:19:50 【问题描述】:我尝试完全按照本教程中所示对我的 iPhone 应用程序进行定位:http://www.youtube.com/watch?v=qNMNRAbIDoU 我的问题是,当我构建并去时,我看到了地图,但地理定位服务没有跟踪我的位置,所以我只看到了全球地图 :( 这是我的代码,希望您能帮助我识别问题:
appdelegate.h
@interface WhereAmIAppDelegate : NSObject <UIApplicationDelegate,CLLocationManagerDelegate>
UIWindow *window;
WhereAmIViewController *viewController;
CLLocationManager *locationManager;
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) CLLocationManager *locationManager;
@property (nonatomic, retain) IBOutlet WhereAmIViewController *viewController;
appdelegate.m:
@implementation WhereAmIAppDelegate
@synthesize window;
@synthesize viewController;
@synthesize locationManager;
#pragma mark -
#pragma mark Application lifecycle
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
// Override point for customization after application launch.
self.locationManager=[[[CLLocationManager alloc] init] autorelease];
if([CLLocationManager locationServicesEnabled])
self.locationManager.delegate=self;
self.locationManager.distanceFilter=100;
[self.locationManager startUpdatingLocation];
// Add the view controller's view to the window and display.
[window addSubview:viewController.view];
[window makeKeyAndVisible];
return YES;
- (void)dealloc
[viewController release];
[window release];
[super dealloc];
#pragma mark CLLocationManagerDelegate Methods
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
MKCoordinateSpan span;
span.latitudeDelta=0.2;
span.longitudeDelta=0.2;
MKCoordinateRegion region;
region.span=span;
region.center=newLocation.coordinate;
[viewController.mapView setRegion:region animated:YES];
viewController.mapView.showsUserLocation=YES;
viewController.latitude.text=[NSString stringWithFormat:@"%f",newLocation.coordinate.latitude];
viewController.longitude.text=[NSString stringWithFormat:@"%f",newLocation.coordinate.longitude];
@end
MyViewController.h
@interface WhereAmIViewController : UIViewController
MKMapView *mapView;
UILabel *latitude;
UILabel *longitude;
@property (nonatomic,retain)IBOutlet MKMapView *mapView;
@property (nonatomic,retain)IBOutlet UILabel *latitude;
@property (nonatomic,retain)IBOutlet UILabel *longitude;
myViewController.m:
@implementation WhereAmIViewController
@synthesize mapView;
@synthesize latitude;
@synthesize longitude;
- (void)dealloc
[mapView release];
[latitude release];
[longitude release];
[super dealloc];
@end
【问题讨论】:
我忘了告诉你我已经添加了两个库Corelocation和MapKit.. 您使用的是真机还是模拟器? AFAIK 模拟器没有 GPS,但你可以模拟它。 我用的是模拟器,但是在教程中,作者也用模拟器:) 另外,看起来这个视频教程使用的是 ios3,而不是 iOS4。您的目标是哪个平台? 如果模拟器没有 GPS 功能,在教程中如何使它工作:( 【参考方案1】:需要检查两件事: 1) 模拟器没有位置,总是显示苹果加州总部的纬度/经度 2)位置确定需要一点时间,所以如果你马上要位置,你不会得到。
另外,您需要在 WhereAmI
视图控制器中添加更多代码。通常你会在viewWillAppear
中看到一些东西。 Here is a link to a Big Nerd Ranch tutorial 在视图控制器和地图视图上。也许对你有帮助。
【讨论】:
我发现,虽然蓝色大头针位于 sim 卡中的 Apple 总部,但无论我何时连接 Wi-Fi,CLLocationManager 都会找到我的位置,但大头针不会移动。 【参考方案2】:这里有几点需要注意:
1) iPhone 模拟器没有 GPS 功能,但它的默认位置是 1 Infinite Loop, Cupertino, CA (USA)
2) 你的委托方法应该是didUpdateFromLocation
,而不是didUpdateToLocation
。
【讨论】:
我的问题是它甚至没有在 Cuppertino 中跟踪苹果的位置:(以上是关于地理位置仅显示全球地图的主要内容,如果未能解决你的问题,请参考以下文章