2012-03-25 19 views
2

我很困惑這些字段的數據類型。我想獲取存儲在手機中的圖像的長和寬,並將其表示爲Geopoint。我的代碼要做到這一點:Geopoint Long和Lat表示爲int,但MediaStore中的Long和Lat字段表示爲雙精度?

double long_ = imageCursor.getDouble(imageCursor.getColumnIndex(MediaStore.Images.Media.LONGITUDE)); 
double lat = imageCursor.getDouble(imageCursor.getColumnIndex(MediaStore.Images.Media.LATITUDE)); 

產生了困惑,因爲這些都是浮點值,但GeoPoint的構造需要長時間和LAT int型。是否有一些我必須手動進行的轉換?

回答

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))); 
    }