Android mapview geopoint差异模拟器和设备

时间:2012-07-31 16:37:40

标签: android geolocation android-mapview geopoints

我使用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.我找不到原因。我不认为它是因为android的版本。有谁有任何想法?

1 个答案:

答案 0 :(得分:0)

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

来自GeoPoint的文档:

  

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

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