1

場所について質問があります。

iOS 5.1 と iOS 6 上で緯度と経度の位置を取得する必要があります。

しかし、私は didUpdateLocations と didUpdateToLocation function に NSLog を書きます。

コンソールにログが表示されていませんでした。

私はシミュレートセットの場所を使用しています。緯度の値は 25.317973、経度の値は 121.538161 (D1) です。

次に、テスト値は ( 25.917973, 121.538161 ) (D2) です。

D1 と D2 の距離は 10 メートル以上です。

しかし、コンソールにログが表示されるのを見たことはありません。

以下にコードを添付します。

私の.hファイル

#mport <GoogleMaps/GoogleMaps.h>
#import <CoreLocation/CoreLocation.h>
#import <Corelocation/CLLocationManagerDelegate.h> 

@interface LocationMapViewController : AbstractViewController<     CLLocationManagerDelegate, GMSMapViewDelegate >
@property (strong, nonatomic) CLLocationManager *locationManager;
@end

私の.mファイル

   - (void)viewDidLoad
       {
           [super viewDidLoad];

 if( _locationManager == nil )
    {
        _locationManager =  [CLLocationManager new];
        _locationManager.delegate = self;

        _locationManager.desiredAccuracy = kCLLocationAccuracyBest;
        _locationManager.distanceFilter = 10.0f;
        [_locationManager startUpdatingHeading];

    }

-(void) locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray     *)locations
{
    NSLog(@"==latitude %f, longitude %f", [[locations objectAtIndex:([locations     count]-1)] coordinate].latitude , [[locations objectAtIndex:([locations count]-1)]     coordinate].longitude);
}

-(void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation     *)newLocation fromLocation:(CLLocation *)oldLocation
{
     NSLog(@"====latitude %f, longitude %f", newLocation.coordinate.latitude,     newLocation.coordinate.longitude);
}

私のコードの何が問題なのか誰か知っていますか?

どうもありがとうございます

4

1 に答える 1

1

.hにインポートする必要はありませんCLLocationManagerDelegate。AFAIKCoreLocationは Google マップも使用していないと思います。そのため、Google マップ API などを使用していない限り、Google マップもインポートする必要はありません。

メソッドで代わりにこれを使用してみてください:

- (void)viewDidLoad
{
    [super viewDidLoad];

    if( _locationManager == nil )
    {
       _locationManager = [[CLLocationManager alloc] init];
       _locationManager.delegate = self;
       _locationManager.desiredAccuracy = kCLLocationAccuracyBest;

       [_locationManager startUpdatingLocation];
    }
}

編集:

私はあなたが距離の違いを得ようとしていることに気づきました。だから多分ちょうどあなたの

_locationManager = [CLLocationManager new];

_locationManager = [[CLLocationManager alloc] init];

これで問題は解決するはずです。

あなたのコメントに従って、もう少しチェックしたところ、メソッド呼び出しを使用していることに気付きました。したがって、デリゲート メソッドstartUpdatingHeadingを使用する必要があります。didUpdateHeadingこれはAppleのCLLocationManagerリファレンスからのものです:

見出しイベントは、デリゲートの locationManager:didUpdateHeading: メソッドに配信されます。エラーが発生した場合、ロケーション マネージャーは代わりにデリゲートの locationManager:didFailWithError: メソッドを呼び出します。

お役に立てれば!:)

于 2013-10-23T09:31:46.010 に答える