PHP 取得刷么照片EXIF中GPS的经纬度,并根据GPS进行GOOGLE地图定位

在php4.2之后有一个函数可以取得EXIF的內容

exif_read_data()
只可以用在JPG跟TIFF的图片

首先當然就是先取得EXIF的內容
第一个栏位是档案 第二个栏位是要取哪些項目(可以去文件看)的資訊
第三個是將各項目的值以array返回

$exif = exif_read_data('my.jpg', 0, true);       //纬度

$latitude = $exif['GPS']['GPSLatitude'];        //经度

$longitude = $exif['GPS']['GPSLongitude'];

都是各有三個元素的array 各代表度,分,秒
但是他們都長得怪怪的 會是分數的形式
所以需要再將他們解析
找到一篇解法
PHP extract GPS EXIF data
把兩個值丟進去就可以了

//Pass in GPS.GPSLatitude or GPS.GPSLongitude or something in that format

functiongetGps($exifCoord)

{

  $degrees= count($exifCoord) > 0 ? gps2Num($exifCoord[0]) : 0;

  $minutes= count($exifCoord) > 1 ? gps2Num($exifCoord[1]) : 0;

  $seconds= count($exifCoord) > 2 ? gps2Num($exifCoord[2]) : 0;

 

  //normalize

  $minutes+= 60 * ($degrees- floor($degrees));

  $degrees= floor($degrees);

 

  $seconds+= 60 * ($minutes- floor($minutes));

  $minutes= floor($minutes);

 

  //extra normalization, probably not necessary unless you get weird data

  if($seconds>= 60)

  {

    $minutes+= floor($seconds/60.0);

    $seconds-= 60*floor($seconds/60.0);

  }

 

  if($minutes>= 60)

  {

    $degrees+= floor($minutes/60.0);

    $minutes-= 60*floor($minutes/60.0);

  }

 

  returnarray('degrees'=> $degrees, 'minutes'=> $minutes, 'seconds'=> $seconds);

}

 

functiongps2Num($coordPart)

{

  $parts= explode('/', $coordPart);

 

  if(count($parts)) <= 0)

   return0;

  if(count($parts)) == 1)

    return$parts[0];

 

  returnfloatval($parts[0]) / floatval($parts[1]);

}

也就是這樣

$latitude= getGps($latitude);

$longitude= getGps($longitude);

/*

output:

緯度

度:$latitude['degrees']

分:$latitude['minutes']

秒:$latitude['seconds']

經度

度:$longitude['degrees']

分:$longitude['minutes']

秒:$longitude['seconds']

*/

就可以再做之後的應用啦

可以用google map確認一下對不對

http://maps.google.com.tw/?q=31 49 35,117 13 20.7

===update===

發現還要判斷南北半球 東西半球

//這會出現S或是N 也就是南北半球

$exif['GPS']['GPSLatitudeRef'];

//如果是S的話 緯度還要乘-1喔

 

//這會出現W或是E 也就是東西半球

$exif['GPS']['GPSLongitudeRef'];

//如果是W的話 經度還要乘-1喔

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值