0

mylocationクラスを使用してgpsプロバイダーからデータを取得しています。コードはこれです:

MyLocation.LocationResult locationResult = new MyLocation.LocationResult() {
        @Override
        public void gotLocation(Location location) {
            //Got the location!

            // for phone
            //currentLocation = new GeoPoint((int) (location.getLatitude() * 1000000),
            //   (int) (location.getLongitude() * 1000000));

            // for emulator
            currentLocation = new GeoPoint((int) (location.getLatitude()),
                    (int) (location.getLongitude()));

            doSomething();

        }
    };
    MyLocation myLocation = new MyLocation();
    myLocation.getLocation(this, locationResult);

エミュレーター(2.3.3)でアプリを使用すると、何も乗算せずに正しい場所が表示されます。

しかし、デバイス(4.0)で使用する場合、latとlonに1000000を掛ける必要があります。理由がわかりませんでした。アンドロイドのバージョンのせいではないと思います。誰かが何か考えがありますか?

4

1 に答える 1

0

MapViewはその単位にマイクロデグレスを使用するため、1e6を掛ける必要があります。それ以外の場合は、アフリカの海岸に現れます-基本的には約0.0の緯度です

GeoPointのドキュメントから:

緯度と経度のペアを表す不変のクラスで、マイクロ度の整数として格納されます。

エミュレータが機能している理由がわからない-そうではないはずです。

于 2012-07-31T16:42:50.400 に答える