我对这些字段的数据类型感到困惑。我想得到存储在手机上的图像的长和lat,并将其表示为Geopoint。我这样做的代码是:
double long_ = imageCursor.getDouble(imageCursor.getColumnIndex(MediaStore.Images.Media.LONGITUDE));
double lat = imageCursor.getDouble(imageCursor.getColumnIndex(MediaStore.Images.Media.LATITUDE));
出现混淆是因为它们是浮点值,但Geopoint构造函数将long和lat作为int类型。我必须手动进行一些转换吗?
答案 0 :(得分:4)
我必须手动进行一些转换吗?
是。引用the documentation,GeoPoint
是“表示一对纬度和经度的不可变类,存储为整数微小数”。
Android的其余部分(包括MediaStore
)将纬度和经度保持为度数的浮点值,而不是微度等级的整数值。创建GeoPoint时,您需要进行转换。我使用这样的实用方法:
private GeoPoint getPoint(double lat, double lon) {
return(new GeoPoint((int)(lat*1000000.0), (int)(lon*1000000.0)));
}