0

GPSを実行していないときにmapViewにユーザーの位置を表示して(まったく)位置を更新するにはどうすればよいですか?意思

mapView.userTrackingMode = kCLLocationAccuracyNearestTenMeters;

仕事をしますか、それともGPSはバックグラウンドでバッテリーを燃やしますか?

ありがとう :)

4

1 に答える 1

5

限られた情報で、できる限りあなたの質問に答えようと思います。

GPS には、低出力から高出力、低精度から高精度の 3 つの主なモードがあります。

  • 位置追跡オフ
  • バックグラウンドでの位置情報の更新 (携帯電話基地局と Wi-Fi を使用)
  • GPS 位置情報の更新

に設定するMKMapViewと、ユーザーの場所に青い点が表示さshowsUserLocationYESます。これMKMapViewが YES に設定されている間、 は利用可能なすべてのロケーション メソッドを使用して、ユーザのロケーションを可能な限り正確に検出し、更新し続けます。

ユーザーの位置を画面の中心に保つモードであるのトラッキングはMKMapView、ユーザーの移動に合わせて表示可能なマップ領域を移動し、iOS5 で使用できます。MKUserTrackingModeから選択する3 つの s が与えられます。ドキュメントから:

MKUserTrackingModeNone: マップはユーザーの位置を追跡しません。

MKUserTrackingModeFollow: マップはユーザーの位置に従います。

MKUserTrackingModeFollowWithHeading: マップはユーザーの位置に従い、見出しが変わると回転します。

したがってkCLLocationAccuracyNearestTenMeters、このコンテキストでは使用可能なオプションではないため、に設定しても機能しません。

場所を表示すると、バックグラウンドでバッテリーが消耗しますか? 背景の意味によって異なります。ユーザーがホーム ボタンをタップするMKMapViewと、システムによって GPS の使用が強制的に停止されます。アプリが実行されていて、MKMapView が有効で、showsUserLocationプロパティが設定されてYESいる間は、GPS を含む利用可能な方法を使用して場所を更新し続けます。これを減らすための戦略がいくつかあります。

1) ユーザーは、マップが画面に表示されている間に自分の位置が更新されるのを確認する必要があると想定します。その場合showsUserLocation、マップが画面外に移動するか、デバイスがロックされるまで YES に設定したままにしてから、NO

2) ユーザーは、アプリを開いたときなど、特定の時点からの位置の静的マーカーのみを表示する必要があると想定します。この場合、CLLocationManagerオブジェクトを作成し、それを要求しstartUpdatingLocation、デリゲート メッセージを必要な精度でフィルター処理してから、位置の更新をオフにする必要があります ( stopUpdatingLocation)。次に、 を に追加しMKAnnotationMKMapView、ユーザーの場所を表示できます。

ご覧のとおり、番号 2 はより多くの作業を行いますが、電力効率は非常に優れています。1 番は簡単ですが、マップが表示されている間はより多くのバッテリーを消費します。ユーザーが期待する動作を決定し、それに応じてアプリを実装するのは開発者次第です。

于 2012-04-19T21:02:51.347 に答える