0

所以我一直在尝试学习如何在 Objective-C 中实现 iPhone 定位。目前我有几个文件:

定位器.h

#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>

@interface locator : NSObject
- (void)locationManager:(CLLocationManager *)manager;
@end

定位器.m

#import "locator.h"
#import <CoreLocation/CoreLocation.h>

@implementation locator
- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation {
    CLLocationDegrees latitude = newLocation.coordinate.latitude;
    CLLocationDegrees longitude = newLocation.coordinate.longitude;
}
@end

视图控制器.h

#import <UIKit/UIKit.h>
#import "locator.h"

@interface ViewController : UIViewController
@end

视图控制器.m

#import "ViewController.h"
#import "locator.h"
#import <CoreLocation/CoreLocation.h>

@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
    CLLocationManager *locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self; // Set your controller as a <CLLocationManagerDelegate>.
    [locationManager startUpdatingLocation];
    [super viewDidLoad];
}
@end

我确定我有时犯了一个重大错误,但我很困惑,并不真正理解它是什么。尝试运行此程序时出现 2 个重大错误。

4

2 回答 2

0

通常我会让 CLLocationManager 像这样的类变量:

@interface ViewController : UIViewController <CLLocationManagerDelegate>

@property (strong, nonatomic) CLLocationManager *locationManager

@end

然后你就可以打电话了:

[self.locationManager stopUpdatingLocation];

当你想要的时候。您还需要实施:

-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {

}

在您的视图控制器中接收具有位置数据的委托回调。

于 2013-05-12T20:17:41.387 回答
0
@interface ViewController : UIViewController
@end

必须成为:

@interface ViewController : UIViewController <CLLocationManagerDelegate>
@end

它现在应该可以工作了。

编辑locator:如果您只想获取 iDevice 坐标,请不要使用您自己的类,直接在您的 viewController 中使用它会更快。

因为如果你想用你自己的班级来做这件事,你必须:

  • 创建一个 CLLocationManager 变量
  • 设置特定的初始化
  • 声明一些方法来启动对 iDevice 位置的跟踪
  • 声明一个额外的方法来返回您的坐标或将您的 CLLocationManager 变量定义为 public !

而且更容易解释:)

希望这可以帮助。

于 2013-05-12T20:03:53.657 回答