2

このコードを使用して、「LocationManager」によってロケーション リスナーを作成しました。

mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 100, 100, mListenerNetwork);

そしてリスナー:

LocationListener mListenerNetwork = new LocationListener() {
    public void onLocationChanged(Location location) {
        // New Location by LocationManager
    }

    public void onProviderDisabled(String provider) { }

    public void onProviderEnabled(String provider) { }

    public void onStatusChanged(String provider, int status, Bundle extras)  { }
}

そして、私はグーグルマップAPIによるリスナーを持っています:

getMap().setOnMyLocationChangeListener(this);

そしてリスナー:

public void onMyLocationChange(Location location) {
    // New Location by GoogleMaps       
}

アプリケーションをデバッグしたところ、リスナー内の場所が異なっていることに気付きました! それ以上に、位置の精度が大きく異なります。Google マップの精度は、LocationManager の精度の半分です (少ないほど良い)。
場所がこんなに違うのはなぜ?

4

2 に答える 2

5

ほとんどの場合、GoogleMaps はLocationClientGoogle I/O 2013 で発表された新しい API を使用しています。この API に切り替えることもできます。

より正確で、バッテリーの消費が少ないと言われています。

現在地の更新を取得する方法の詳細: http://developer.android.com/training/location/receive-location-updates.html

于 2013-05-30T09:31:43.160 に答える
0

requestLocationUpdates への呼び出しは、ネットワーク ロケーション プロバイダー (LocationManager.NETWORK_PROVIDER) からのロケーションの更新のみを要求しています。Network Location Provider は、携帯電話基地局と WiFi 信号を使用して位置を特定します。また、GPS 衛星を使用する GPS ロケーション プロバイダー (LocationManager.GPS_PROVIDER) もあり、衛星が利用可能な場合ははるかに正確です。Google マップは、最も正確な位置を決定するために 2 つのロケーション プロバイダを組み合わせて使用​​する可能性が最も高いです。

ニーズに合わせて Android の位置情報サービスを利用する最善の方法については、このガイドをご覧ください: http://developer.android.com/guide/topics/location/strategies.html

于 2013-05-29T21:18:08.067 に答える