0

アプリの読み込み中にユーザーロケーションの調整を確認したいのですが。次のコードを実装しましたが、0.000を返します

 mapView.showsUserLocation=YES;

CLLocationCoordinate2D annotationCoordinate;
annotationCoordinate.latitude=mapView.userLocation.location.coordinate.latitude;
NSLog(@"%f",annotationCoordinate.latitude);

私は理解できませんでした。何か助けはありますか?

4

5 に答える 5

1

まず、ユーザーの場所を取得するのに時間がかかることを考慮に入れる必要があります。さらに、ユーザーはアプリケーションの位置情報サービスを無効にしたり、接続状態の間は位置情報サービスを利用できなくなったりする可能性があります。したがって、アプリケーションの開始手順を再考することをお勧めします。

あなたが決定を下すとき、プロトコルmapView:didUpdateUserLocation:の方法を見てください。このメソッドが起動した後、場所はのプロパティをMKMapViewDelegate介して利用できるようになります。userLocationMKMapView

アップデート

ユーザーの場所がすでにチェックされている状態でマップビューを開きたい場合は、との使用を検討しCLLocationManagerてくださいCLLocationManagerDelegate。このようにして、位置情報サービスが利用可能かどうかを確認し、メソッドが起動した後にマップビューを開くことができますlocationManager:didUpdateToLocation:fromLocation:

完全な情報については、ユーザーの場所のプログラミングガイドの入手をご覧ください。

于 2012-11-03T23:34:37.340 に答える
1

ビューでユーザーの位置座標を取得することはできません。ロードする必要があるのは、以下のデリゲートメソッドを使用することです。

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
    NSLog(@"coordinates = %f,%f", mapView.userLocation.coordinate.latitude,
          mapView.userLocation.coordinate.longitude);
}

マップオブジェクトがデリゲートに接続されていることを確認してくださいテストしたばかりで動作するはずです

于 2012-11-03T23:40:00.590 に答える
1

1)FrameWork CoreLocationとMapkitを追加し
ます。2)ViewController.hファイルに

#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
@interface MapViewController : UIViewController<MKMapViewDelegate,CLLocationManagerDelegate>
{
      CLLocationManager *locationManager;
}
@property (nonatomic, strong) IBOutlet MKMapView *mapView;

3)viewController.mファイル内

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

今didUpdateUserLocationにあります

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation{
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userLocation.coordinate, 800, 800);
[self.mapView setRegion:[self.mapView regionThatFits:region] animated:YES];
// Add an annotation
MKPointAnnotation *point = [[MKPointAnnotation alloc] init];
point.coordinate = userLocation.coordinate;
point.title = @"Where am I?";
point.subtitle = @"I'm here!!!";
[self.mapView addAnnotation:point];}

4)UIにMapviewを追加します

:[ MapView]を選択し、[属性インスペクター]に移動して、[動作]の下に[表示]ユーザーの場所をCKECKマークします。

于 2014-06-02T12:38:02.400 に答える
0

私はあなたがこれを使うべきだと思います:

#import <CoreLocation/CoreLocation.h>

次に、viewDidLoadメソッドで:

CLLocationManager *locationManager = [[CLLocationManager alloc] init];
    [locationManager startUpdatingLocation];
    [mapView setRegion:MKCoordinateRegionMake(locationManager.location.coordinate, MKCoordinateSpanMake(0.2, 0.2))];
    mapView.showsUserLocation = YES;
    NSLog(@"%f",mapView.region.center.latitude);
于 2012-11-03T23:52:09.733 に答える
0

さて、私もそれを自分で修正することができました。誰もあなたに言っていないのは、info.plistでキーと値のペアを設定する必要があるということです。

どのメソッド(requestAlwaysAuthorizationまたはrequestWhenInUseAuthorization)に応じて、「情報プロパティリスト」ディクショナリの下にキーを追加する必要があります。最初のメソッドの使用:NSLocationAlwaysUsageDescriptionおよび2番目のメソッドの使用:NSLocationWhenInUseUsageDescription。

両方のキーの値フィールドは、ユーザーに表示したい任意の文字列に設定できます。

上部の両方のキーが私たちが探しているものです。 それはどのように見えるべきか

これで、確認を求めるダイアログが表示されます。

PS:インターネット上のチュートリアルには、プロセスのこのステップが記載されていませんが、これらの各メソッドのドキュメント(CLLocationManagerのrequestWhenInUse)を読むと、これら2つのキーがないと何も表示されないことがわかります。

于 2016-05-03T16:26:27.610 に答える