如何用苹果7手机照相的时候给照片添加经纬度水印和位置,如下图

  就是拍摄的照片要能显示位置和经纬度。像这样。IPHONE6.请告知一下,谢谢  手机上相机定位什么的已经开启  
16-06-16 &iOS怎样获取当前手机的地理位置和经纬度 - 简书
iOS怎样获取当前手机的地理位置和经纬度
app常见需求(获取当前手机经纬度 地址 精确到省市和街道)并且需要通过经纬度计算出当前位置距离某个商店(确认经纬度的商店)距离是多少?
1、导入coreLocation库
导入CoreLocation
2、需要在info.plist里设置权限
//允许在前台使用时获取GPS的描述
NSLocationAlwaysUsageDescription=YES
//允许永久使用GPS的描述
NSLocationWhenInUseUsageDescription=YES
info.plist设置
3、导入头文件和设置代理
导入头文件和设置代理
4、初始化CLLocationManager
初始化CLLocationManager
5、设置代理方法
#pragma mark CoreLocation deleagte (定位失败)
/*定位失败则执行此代理方法*/
/*定位失败弹出提示窗,点击打开定位按钮 按钮,会打开系统设置,提示打开定位服务*/
-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{
/*设置提示提示用户打开定位服务*/
UIAlertController * alert = [UIAlertController alertControllerWithTitle:@"允许\"定位\"提示" message:@"请在设置中打开定位" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction * ok =[UIAlertAction actionWithTitle:@"打开定位" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
/*打开定位设置*/
NSURL * settingsURL = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication]openURL:settingsURL];
UIAlertAction * cacel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
[alert addAction:ok];
[alert addAction:cacel];
[self presentViewController:alert animated:YES completion:nil];
/*定位成功后则执行此代理方法*/
#pragma mark 定位成功
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray&CLLocation *& *)locations{
[_locationManager stopUpdatingLocation];
CLLocation * currentLocation = [locations lastObject];
CLGeocoder * geoCoder = [[CLGeocoder alloc]init];
/*打印当前经纬度*/
NSLog(@"%f%f",currentLocation.coordinate.latitude,currentLocation.coordinate.longitude);
/*地理反编码 -- 可以根据地理位置(经纬度)确认位置信息 (街道、门牌)*/
[geoCoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray&CLPlacemark *& * _Nullable placemarks, NSError * _Nullable error) {
if (placemarks.count &0) {
CLPlacemark * placeMark = placemarks[0];
currentCity = placeMark.
if (!currentCity) {
currentCity = @"无法定位当前城市";
/*看需求定义一个全局变量来接受赋值*/
NSLog(@"%@",placeMark.country);/*当前国家*/
NSLog(@"%@",currentCity);/*当前城市*/
NSLog(@"%@",placeMark.subLocality);/*当前位置*/
NSLog(@"%@",placeMark.thoroughfare)/*当前街道*/
NSLog(@"%@",placeMark.name);/*具体地址 ** 市 ** 区** 街道*/
/*根据经纬度判断当前距离*/
/*这个地方需要double转字符串赋值到label上面*/
self.headView.Distance.text =HZString(@"距您%.1fkm",[self getDistance:currentLocation.coordinate.latitude lng1:currentLocation.coordinate.longitude lat2:weiDouble lng2:jingDouble]);
else if (error == nil&&placemarks.count == 0){
NSLog(@"没有地址返回");
else if (error){
NSLog(@"location error:%@",error);
下面开始通过经纬度计算当前手机位置和接口获取到的经纬度两者之间计算距离的方法
答:首先上面这个需求你需要知道四个属性,分别是当前位置的经度纬度以及接口获取的精度纬度,上面解析出来当前的经纬度就是
//将经度显示到label上
/*打印当前经纬度*/
NSLog(@"%f%f",currentLocation.coordinate.latitude,currentLocation.coordinate.longitude);
那么接口获取到的一般都是字符串类型的,那么其实经度和纬度是无法用字符串来识别的,我们只能用字符串转换成double来让系统识别
double类型
好了到现在为止我们将需要的四个属性都找到了,下面我们开始计算,需要声明两个实例方法,然后进行计算
调用实例方法
[self getDistance:newLocation.coordinate.latitude lng1:newLocation.coordinate.longitude lat2:weiDouble lng2:jingDouble];
#pragma mark 通过经纬度计算两地距离
- (float)getDistance:(float)lat1 lng1:(float)lng1 lat2:(float)lat2 lng2:(float)lng2
//地球半径
int R = 6378137;
//将角度转为弧度
float radLat1 = [self radians:lat1];
float radLat2 = [self radians:lat2];
float radLng1 = [self radians:lng1];
float radLng2 = [self radians:lng2];
float s = acos(cos(radLat1)*cos(radLat2)*cos(radLng1-radLng2)+sin(radLat1)*sin(radLat2))*R;
s = round(s* 1;
- (float)radians:(float)degrees{
return (degrees*3.0.0;
以上代码就能实现获取当前位置(省市街道和经纬度)以及计算经纬度和经纬度之前的距离的方法,喜欢的可以点赞。谢谢。
本人个人微信公众号地址(喜欢记得关注?)
辛小二个人微信公众号地址
做一个谦卑的人,因为你眼中的世界和事物还太浅太浅,虚心学习成就更好的人生;请关注本人微信公众号:&小辛代码&???再谈iPhone手机不能显示照片地理位置的问题
上个月我到西班牙葡萄牙旅游,旅游期间我查看用iPhone手机拍摄的照片,照片顶部会显示拍摄地点的信息,有时候甚至是中文的,也有时候是显示英文。
下图:照片上的位置显示
回国后我偶然发现,我再在手机上查看在国外拍摄的照片,地理位置信息都不见了,照片顶部仅仅显示拍摄日期。这是为什么呢?到底哪里出了问题?开始的时候,我怀疑照片本身的地理信息被弄丢了,后来事实证明并非如此,因为:①这些原始照片我从未处理过,②如果将这些照片用电子邮件发送到电脑上,再用PHOTOSHOP查看它们的EXIF信息,发现记录着这些照片经纬度的数据都还在。因此可以得出结论,问题出在手机的处理上。
为了搞清楚这是怎么回事,我做了一些试验。
试验1:“飞行模式+VPN”法
据一些网友介绍的方法,我做了几步操作:①把手机设置为飞行模式,②连接VPN,这一步有网友戏称是采用“科学上网”方式,③打开iPhone自带的地图,点击右下角的信息提示钮,在弹出的提示最下方确认数据来源是“TOMTOM”,④重启手机。
下图:连接VPN之后地图数据来自TOMTOM
在做了这几步之后,再次查看手机里在国外拍摄的照片,地理位置就都显示在照片顶部了。
这个试验说明了iPhone是有显示照片地理位置的功能的,并不像有的网友说的因为升级了系统这个功能没有了(我的iOS是最新版9.0.2),关键是需要取得照片的地理位置信息,而平时在中国使用iPhone,默认的自带地图是高德地图,而高德地图里没有国外的数据,因此导致显示地理位置失败,当连接VPN之后,自带地图换成使用TOMTOM的数据,国外数据就取到了。至于为何要设置成飞行模式,这是因为如果手机连接电信运营商,也能让iPhone认为手机地点是在国内,从而可能导致地图数据仍然是高德的。
试验2:使用“Geotagmypic”软件
Store那里下载了一款“Geotagmypic”软件,它的功能是可以查阅照片的地理位置信息,一方面提供拍摄照片的地点的名称,一方面在地图上显示出拍摄地点的位置。
我先用它查看我在北京拍摄的一张照片,结果它提供的信息很准确,既显示了街道名,也显示了拍摄地点的地图位置。接下来我用它查看我在西班牙拍摄的照片,此时很有趣,它弹出提示说“Internet连网似乎没有启用”,因而,没能显示拍摄地点的名称,但是却能显示拍摄地点的地图位置(甚至还是中文的)。此时,我连接VPN,然后再次查看同一张照片,结果地理位置的名称就能正确显示了。
下图:出错提示
下图:尽管有出错提示但是能正确显示拍摄地点的地图
这个试验说明了该软件先是去取位置名称的数据,因为此时iPhone自带地图是高德地图,所以取不到相关信息,于是它就弹出提示说你没连接互联网。但是,由于照片中存有拍摄地点的经纬度信息,所以根据这点,马上能显示拍摄位置的地图。
试验3:比较iPhone和iPad
我在家,用iPhone手机和iPad各拍摄了一张照片,结果iPhone上这张照片只显示“今天几点几分”,而iPad上就显示我家的街道名称。
这个试验说明了即使拍摄地点在国内,同样都用高德地图,iPhone手机也不显示地点,而iPad则能显示,这又是什么原因呢?
最后说一下到目前为止我得出的结论:①如果想知道照片的拍摄地点,使用“Geotagmypic”软件是很好的方法,不过有时需要用到VPN;②在不同地点拍照的时候,iPhone使用的地图是不同的,例如在国外,不用高德地图而可能用的是TOMTOM地图数据,在国内用的是高德地图。③为何在国内我拍摄的照片在iPhone上不显示地理位置,我还没搞明白。
感想:墙,是导致出现问题的根源,在国内,互联网不能真正做到互联。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 带时间和经纬度照相机 的文章

 

随机推荐