問題タブ [cllocationmanager]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - 精度を低く設定すると、CLLocationManagerが非常に怠惰になるのはなぜですか?
テストにより、必要な精度を低く設定するCLLocationManager
と、このコンポーネントの動作にバグが生じることがわかりました。
これが私が行った2つのテストです:
必要な精度をに設定します
kCLLocationAccuracyHundredMeters
。そうすると、デバイスは私の位置を希望どおりに正確に見つけることができなくなります。これが私CLLocationManager
の代理人からのログです:それでおしまい。水平精度1500の30秒で2つのイベント。
希望精度をに設定し
kCLLocationAccuracyBest
ます。次に、デバイスが私を見つけます!同じログ:私はテスト1とまったく同じ場所にいますが、今回は、デバイスが最初に必要な精度(つまり、100.0)で現在地を見つけることができます。
同じ結果を得るために、これら2つのテストを何度も繰り返しました。
私の質問は:
「精度を設定したときにiPhoneデバイスが自分の位置を見つけようとしない理由を誰かが知っていますkCLLocationAccuracyHundredMeters
か?」</ p>
精度をに設定すると、kCLLocationAccuracyBest
別のハードウェアセンサーがオンになる可能性があると思いますが、これはバグとは見なされませんか?この問題に関連するものをインターネット上で見つけることができませんでした。
あなた自身の経験を共有してくれてありがとう。(テストは、Wi-Fiおよび電話ネットワークを介した3GSデバイスで行われました)
iphone - いつ/どこでStartUpdatingLocationを開始しますか?
位置の決定には時間がかかります。ロケーションマネージャーはいつどこで開始する必要がありますか?
現在、結果ビュー(場所が必要)が読み込まれる前に、1つのビューで場所の更新を開始しています。ユーザーが高速にタップすると、0.0座標が得られます。
適切なタイミングを得るにはstartUpdatingLocation
、結果ビューの前に3つのビューを呼び出す必要があります。ここでの問題は、この3つのビューコントローラーを介して値を渡さなければならないことです。
次のことは、別のビュー(上記のビューではない)でも場所が必要なことです。独自のロケーションリスナークラスを作成しようと思いました。しかし、このクラスはいつインスタンス化され、座標(経度、緯度)が通過するのでしょうか。ロケーションリスナーを作成したクラスのみが結果を返すため、プロトコルは役に立ちません。
私は少し読んで、次の可能な解決策を思いつきます:
1)通知センターの使用(このソリューションを参照)
2)ロケーションマネージャーのプロパティをAppDelegate
1)で、結果を必要とするビューが以前に作成されなかったという問題が発生します。
2)の実装はどのようになりますか?アプリデリゲートでロケーションマネージャーのインスタンスを作成してから、緯度/経度などのいくつかのivarにアクセスしAppDelegate
ます。ここで説明するソリューションを採用する場合は、CLLocationManagerDelegate
毎回実装する必要があります。それを行うためのクラスが1つある方が良いのではないでしょうか。
おそらくあなたは3番目の解決策を持っていますか?
iphone - startMonitoringSignificantLocationChanges メソッドが応答しない
startMonitoringSignificantLocationChanges メソッドを使用して現在の場所を特定しました。デバイスが静止している場合は正常に動作しますが、移動中やセルタワーが変更されている間は応答しません。
初期コールバックを取得します。私はこの方法を使用しています
一定間隔ごとに呼び出されますが、移動中に場所を更新することはありません。メソッドを次のように置き換えようとしました-
プロセスはバックグラウンドで実行されています。
iphone - iPhone Core Location: 総標高損失/利得を計算します
コアロケーションデータの記録の最後に、標高の損失と利得の合計を計算したいと考えています。私はこれの数学を考えるのに苦労しています。
たとえば、600 フィートから開始し、追跡中に上下に移動した場合、標高の増減をどのように計算するのでしょうか?
アイデア?
iphone - Mapkit でユーザーの場所の年齢を確認する - MapKit ユーザーの場所の GPS 精度は、CLLocationManager よりも大幅に優れていますか?
屋内で iPhone 4 を使用。WiFi は無効
LocateMe SDK サンプルまたは独自のコードを 30 ~ 60 秒間実行すると、2294 メートルの水平精度が得られます。かなり不正確ですが、セル タワーの三角測量には妥当です。Foursquare のようなリバース ジオコーディングや位置情報の処理を行う他のアプリを見ると、同様に精度が低いことがわかります。
ただし、Mapkit を使用するアプリの別のビューに切り替えて、ユーザーの場所を確認/表示すると、その場所に表示されます。私は、WiFiレベルの場所または強力なGPS読み取りに関連付ける地図上で正確な家のレベルを意味します.
そのため、Mapkit は、デバイスで WiFi が有効になっているときに取得されたキャッシュされた場所の読み取りに依存している可能性が高いと考えました。設定で位置情報サービスをオフにしました。マップ アプリを再起動すると、マップが現在の場所から離れて移動しました。位置情報サービスを再度有効にします。マップアプリをもう一度開きます - 強力な位置情報を読んでビンゴに戻ります。
私の知る限り、ロケーション サービスはシステム レベルのシングルトンであり、CLLocationManager インスタンスと同じデータが MapKit と共有されます。私が考えることができる唯一のことは、位置がMapKitでより自由にキャッシュされており、位置情報サービスをオフにしても、map.appが開始されてもキャッシュがクリアされないことです.
MapKit でユーザーの場所の年齢を確認する方法を知っている人はいますか? さらに調査したいと思います。文書化されていない呼び出しまたはプロパティであっても、出荷できない場合でも、何が起こっているのかを理解するためにデバッグに使用したいと思っています。
ありがとう
iphone - バックグラウンドでアプリを継続的に実行する
位置情報サービスを使用して、アプリをバックグラウンドで実行し続けたいと考えています。このために私は使用しました:
しかし、使用するNSTimer
と呼び出されませんUpdateLocation
。別の方法で呼び出してみましたが、一度しか呼び出されませんでした。
アプリをバックグラウンドで継続的に実行し、一定の時間間隔で位置を検出したいと考えています。
iphone - CoreLocationを使用する際のバッテリーに関する警告
iPhoneでGPSを使用する多くのアプリで、アプリの説明に次の警告が表示されます。
警告:バックグラウンドでGPSを継続して使用すると、バッテリーの寿命が大幅に短くなる可能性があります。
アプリがバックグラウンドプロセス(startMonitoringSignificantLocationChangesやRegion Monitoringなど)を使用する場合、Appleはバッテリー寿命に大きな影響を与えないことを提案しました。したがって、これらのバックグラウンド位置情報サービスを使用する場合でも、アプリの説明にこの警告を含める必要がありますか?
これに関するAppleからのガイドラインはありますか?人々は一般的に「ベストプラクティス」として何を使用しますか
ありがとう、マーク
iphone - バックグラウンド スレッドで CLLocation の更新を受け取る
iPhone SDK を使用して位置情報の更新のために (非同時) NSOperation を実装しようとしています。NSOperation サブクラスの「肉」は次のようになります。
ここで、メイン スレッドで、この操作のインスタンスを作成し、NSOperationQueue に追加します。start メソッドは呼び出されますが、-locationManager:...
どのデリゲート メソッドも呼び出されません。なぜ彼らが呼ばれないのか理解できません。
インターフェイスを<CLLocationManagerDelegate>
プロトコルに準拠させました。NSOperationQueue にこの操作のスレッドを管理させているので、すべて CLLocationManagerDelegate のドキュメントに準拠している必要があります。
デリゲート オブジェクトのメソッドは、対応するロケーション サービスを開始したスレッドから呼び出されます。そのスレッド自体に、アプリケーションのメイン スレッドにあるようなアクティブな実行ループが必要です。
これが機能するために他に何を試すべきかわかりません。多分それは私をじっと見つめています...どんな助けも大歓迎です。
前もって感謝します!
objective-c - オブジェクトのスコープ、objective-c、CLLocationManager
私はまだプログラミングにかなり慣れていないので、初心者の質問があります。私のタイプ CLLocationManager の場合、appDelegate.m ファイルにインスタンス変数がある場合、applicationDidFinishLaunching メソッドで CLLocationManager インスタンス変数を割り当てて初期化できると考えました。そして、ボタンを使用して別のメソッドで startUpdatingLocation を呼び出すことができます (別のクラスから呼び出しているため)。これは機能していないようで、startUpdatingLocation と同じメソッドで割り当て/初期化する必要があると考えています。本当?同じメソッドで stopUpdatingLocation する必要がありますか? 私のコードは以下の通りです:
次のようにもっとやるべきだと思われます:
この 2 番目の方法でそれを行うことになっている場合、CLLocationManager オブジェクトのスコープが、それが含まれるメソッドに対してのみであるためですか? インスタンス変数として使用すると、他のメソッドで使用でき、startUpdatingLocation と stopUpdatingLocation に別のメソッドを使用できると考えました。ありがとう。
iphone - iPhoneの一般的なコードを配置する場所、CLLocationManager
タブバーアプリがあり、さまざまなタブでCore Locationを使用することを計画している場合、CLLocationManagerの割り当て/初期化に使用するコードを配置し、startUpdatingLocationが呼び出されたら更新を取得するための適切な一般的な場所はありますか?または、2つの異なるタブで使用する場合は、各タブのコードに配置するだけですか?私はプログラミングに不慣れなので、ベストプラクティスは何であるか疑問に思っています。ありがとう。