我使用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的版本。有谁有任何想法?
答案 0 :(得分:0)
因为MapView对其单位使用microdegress所以你需要乘以1e6。否则你出现在非洲海岸 - 基本上长约0,0
来自GeoPoint的文档:
表示一对纬度和经度的不可变类,存储为整数微小数。
不知道为什么模拟器正在工作 - 它不应该。