地理位置仅显示全球地图

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 中跟踪苹果的位置:(

以上是关于地理位置仅显示全球地图的主要内容,如果未能解决你的问题,请参考以下文章

GeoComplete,模态中的谷歌地图显示灰色地图,位置仅在屏幕调整大小后显示

仅使用 URL 的 Google 地图中的当前位置

长春市全球地表覆盖数据怎么下载

仅有时在 iOS 后台更新位置

使用随机位置方法显示所有位置

怎样在地图上标注自己的店铺?