获取照片的GPS位置

4
我知道如何获取移动电话的当前GPS位置。 我也知道如何在拍摄照片时将GPS位置保存到照片中(相机选项三星Galaxy S2)。
但是,我该如何获取该照片的GPS位置(以后)? 当我在计算机上打开照片时,我可以看到GPS位置数据,但是不知道如何在Android中提取它们。所以有人能给我指明方向吗? 为了更清楚地提出问题: 如何获取已经拍摄的照片的GPS位置?
谢谢, Bigflow
2个回答

20

josnidhin 的贡献使得这个答案的实现成为可能,所以请确保也要给他应有的认可 :)

import android.media.ExifInterface;

exif = new ExifInterface(filePath);
String lat = ExifInterface.TAG_GPS_LATITUDE;
String lat_data = exif.getAttribute(lat);

接下来,lat_data将变成这样:51/1,58/1,32/1

这相当于51、58、32。 (在谷歌地图中输入这些数字会得到错误的结果)

要获取这个位置的GPS坐标,需要进行一些数学计算,具体如下:

  1. 计算总秒数:
    58′32″ = (58*60 + 32) = 3512 秒。
  2. 小数部分是总秒数除以3600:
    3512 / 3600 = ~0.975556
  3. 将小数度数加上整数度数得出最终结果:
    51 + 0.975556 = 51.975556
  4. 如果是西经坐标,请取结果的负值。(这次不是)
  5. 答案为:51.975556

当你使用TAG_GPS_LONGITUDE时也是一样的。


1
请问能否对“如果是西经坐标,则取反结果。(这次不是)”进行更详细的解释?我该如何确定这一点? - Nguyen Minh Binh
1
@NguyenMinhBinh:你可以获取ExifInterface.TAG_GPS_LATITUDE_REF的值,它是南半球则为“S”,北半球为“N”;同样地,ExifInterface.TAG_GPS_LONGITUDE_REF可以是“W”或“E”。 - Son Huy TRAN

9

我认为地理标记信息位于拍摄照片的EXIF数据中。找一个合适的EXIF数据阅读器,可以帮助您提取所需的数据。


谢谢,"EXIF" 这个词正是我在寻找的 :). 我自己回答了问题,为了更好地帮助人们,但还是感谢你指引我正确的方向。+1 - Bigflow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接