現在の場所をCoreLocation
で見つける必要があり、複数の方法を試しましたが、これまでのところCLLocationManager
は0のみを返しました。(0.000.00.000
)。
これが私のコードです(動作するように更新されました):
インポート:
#import <CoreLocation/CoreLocation.h>
宣言済み:
IBOutlet CLLocationManager *locationManager;
IBOutlet UILabel *latLabel;
IBOutlet UILabel *longLabel;
関数:
- (void)getLocation { //Called when needed
latLabel.text = [NSString stringWithFormat:@"%f", locationManager.location.coordinate.latitude];
longLabel.text = [NSString stringWithFormat:@"%f", locationManager.location.coordinate.longitude];
}
- (void)viewDidLoad {
locationManager = [[CLLocationManager alloc] init];
locationManager.distanceFilter = kCLDistanceFilterNone; // whenever we move
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; // 100 m
[locationManager startUpdatingLocation];
}
次のようにCoreLocation
を使用して場所を見つけることができます。
インポートCoreLocation
:
#import <CoreLocation/CoreLocation.h>
CLLocationManager
を宣言します:
CLLocationManager *locationManager;
locationManager
のviewDidLoad
を初期化し、return
として現在の場所をNSString
できる関数を作成します。
- (NSString *)deviceLocation {
return [NSString stringWithFormat:@"latitude: %f longitude: %f", locationManager.location.coordinate.latitude, locationManager.location.coordinate.longitude];
}
- (void)viewDidLoad
{
locationManager = [[CLLocationManager alloc] init];
locationManager.distanceFilter = kCLDistanceFilterNone; // whenever we move
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; // 100 m
[locationManager startUpdatingLocation];
}
deviceLocation
関数を呼び出すと、期待どおりに場所が返されます。
NSLog(@"%@", [self deviceLocation]);
これは単なる例です。ユーザーが準備を整えずにCLLocationManager
を初期化することはお勧めできません。そしてもちろん、latitude
が初期化された後、locationManager.location.coordinate
を使用してlongitude
とCLLocationManager
を自由に取得できます。
[ビルドフェーズ]タブ(CoreLocation.framework
)のプロジェクト設定にTargets->Build Phases->Link Binary
を追加することを忘れないでください。
CLLocationManagerを使用すると、位置情報をすぐに取得する必要はありません。 GPSおよび位置情報を取得するその他のデバイスは初期化されない場合があります。情報を入手するまでに時間がかかる場合があります。代わりに、locationManager:didUpdateToLocation:fromLocation:
に応答するデリゲートオブジェクトを作成し、それをロケーションマネージャーのデリゲートとして設定する必要があります。
こちら をご覧ください