0

現在地がわかりません。別の場所でアプリを起動すると、アプリは最後の場所を取得できます。しかし、私は最後の場所にしたくありません。アプリを閉じて再起動すると、アプリは現在地を取得できるようになります。アプリケーションの最初の起動であっても、現在の場所を取得するにはどうすればよいですか?

- (void)viewDidLoad
{
    [super viewDidLoad];

    [locationManager startUpdatingLocation];

    self.mapView.delegate = self;
    [self.mapView setShowsUserLocation:YES];

    locationManager.delegate=self;

    locationManager = [[CLLocationManager alloc] init];

    locationManager.delegate=self;
    locationManager.desiredAccuracy=kCLLocationAccuracyBest;
    locationManager.distanceFilter=kCLDistanceFilterNone;

    location = [locationManager location];

    CLLocationCoordinate2D coord;
    coord.longitude = location.coordinate.longitude;
    coord.latitude = location.coordinate.latitude;
    lat = coord.latitude;
    longt = coord.longitude;
}
4

4 に答える 4

8

[locationManager startUpdatingLocation];デリゲートを設定する前に実行しています

locationManager = [[CLLocationManager alloc] init];
locationManager.delegate=self;
locationManager.desiredAccuracy=kCLLocationAccuracyBest;
locationManager.distanceFilter=kCLDistanceFilterNone;

[locationManager startUpdatingLocation];

そして、そのデリゲートメソッドを実装します

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

- (void)locationManager:(CLLocationManager *)manager
       didFailWithError:(NSError *)error
{

}
于 2013-03-07T07:49:43.940 に答える
2

viewDidLoad現在の場所とその座標を取得するには、メソッドでこれを行うだけです。

- (void)viewDidLoad {
  [super viewDidLoad];
  locationManager = [[CLLocationManager alloc] init];
  locationManager.delegate = self;
  locationManager.distanceFilter = kCLDistanceFilterNone; // whenever we move
  locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; // 100 m
  [locationManager startUpdatingLocation];
}

そして、場所の更新については、次の方法を使用してください:

    - (void)locationManager:(CLLocationManager *)manager
        didUpdateToLocation:(CLLocation *)newLocation
               fromLocation:(CLLocation *)oldLocation{
// your code here...
}
于 2013-03-07T08:08:12.463 に答える
0

Location AwarenessProgrammingGuideに記載されているドキュメントをお読みください。

具体的には、現在の場所を尋ねると、システムは最後の既知の場所をすぐに返すので、それを使って何か便利なことができます。過去の場所を気にしない場合は、それを破棄してtimestamp、返されたプロパティを調べて最新の場所CLLocationを判断することにより、より最近の場所情報のみを使用できます。

于 2013-03-07T07:56:27.227 に答える
0

CLLocationManagerあなたは本当にドキュメントを読むべきです。

デバイスの場所を特定するのに時間がかかるため、実行しているワットは機能しません。CLLocationManagerそのため、場所が抑止されたことが通知されるまで待つ必要があります。

CLLocationManagerDelegate場所が抑止力であるかどうか、または場所の決定が失敗したかどうかを通知するを実装する必要があります。

また、次の方法で場所を抑止できるかどうかも確認する必要があります。

if ([CCLocationManager locationServicesEnabled]) {
    // The location services are available.
}

また、で位置情報サービスを使用する権限があるかどうかも確認する必要があります[CCLocationManager authorizationStatus]

于 2013-03-07T07:56:45.917 に答える