1

ユーザーがボタンをタップUIViewMKMapViewたときにのみ表示される UIViewController に があります。

プロセスは次のとおりです。

  • オブジェクトは、ファイルCLLocationManager内でプライベート メンバーとして宣言されていheaderます。
  • 付きUIViewMKMapViewが表示されます (最初、フレームは境界外にあります。ユーザーのアクションでビュー境界内に移動されます。 WITHIN THE SAME viewController)。
  • 初期化されます:

    locationManager = [[CLLocationManager alloc]  init];
    locationManager.distanceFilter = kCLDistanceFilterNone; // whenever we move
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; // 100 m
    [locationManager startUpdatingLocation];
    CLLocation *location = [locationManager location];
    CLLocationCoordinate2D coordinate = [location coordinate];
    
    MKCoordinateSpan span = MKCoordinateSpanMake(0.04, 0.04);
    MKCoordinateRegion region = MKCoordinateRegionMake(coordinate, span);
    mapView.showsUserLocation = YES;
    [mapView setRegion:region animated:YES];
    
  • 近くの場所は次を使用して取得されますFoursquare API

viewここで、が表示されている境界から削除されたときに、場所のロックを停止したいと考えています。でやってみましたstopUdatingUserLocation。私も を使用releasedしてlocationManagerいますが、GPS ロック アイコンは に表示されたままstatusBarです。私が理解しているように、継続的な GPS ロックはバッテリーを消耗します。それを止めたいと思います。どうすればいいですか?

4

1 に答える 1

2

公式に文書化されていなくても、アプリ全体で CLLocationManager を 1 つだけ使用することをお勧めします。シングルトンとして扱い、毎回初期化しないでください。適切に動作するはずです。

于 2013-09-20T13:38:39.840 に答える