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)中使用它时,纬度和经度需要乘以 1000000。我找不到原因。我不认为这是因为 android 的版本。有人知道吗?

4

1 回答 1

0

因为 MapView 使用 microdegress 作为其单位,所以您需要乘以 1e6。否则你会出现在非洲海岸 - 基本上纬度大约为 0,0

来自 GeoPoint 的文档:

表示一对纬度和经度的不可变类,存储为微度的整数。

不知道为什么模拟器正在工作 - 它不应该。

于 2012-07-31T16:42:50.400 回答