从iOS图像中提取的GPS值未显示正确的正值或负值

从iOS图像中提取的GPS值未显示正确的正值或负值,ios,iphone,image,google-maps,gps,Ios,Iphone,Image,Google Maps,Gps,我正在开发一款iPhone应用程序,可以从拍摄的照片中提取GPS数据。我已经为这个功能做了很多工作,但是我注意到返回的GPS数据没有显示正确的坐标值+或-。例如,我在日志中获得以下输出: "{GPS}" = { Altitude = "33.0329"; DOP = 65; Latitude = "64.84069"; LatitudeRef = N; Longitude = "32.41367"; LongitudeRef = W;

我正在开发一款iPhone应用程序,可以从拍摄的照片中提取GPS数据。我已经为这个功能做了很多工作,但是我注意到返回的GPS数据没有显示正确的坐标值
+
-
。例如,我在日志中获得以下输出:

"{GPS}" =     {
    Altitude = "33.0329";
    DOP = 65;
    Latitude = "64.84069";
    LatitudeRef = N;
    Longitude = "32.41367";
    LongitudeRef = W;
    TimeStamp = "2014:01:04 14:47:01";
};
当我测量经纬度并使用反向地理定位地图时,我得到了世界另一边的某个地方。在研究之后,我发现该值:

经度=32.41367

应该是:

Longitude=“-32.41367”

它只是忽略了消极因素。你知道为什么会这样吗?以下是构建上述输出的一些代码示例:

    UIImage *image =  [info objectForKey:UIImagePickerControllerOriginalImage];
    NSData *jpeg = UIImageJPEGRepresentation(image,image.scale);
    CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)jpeg, NULL);
    NSDictionary *metadata = (__bridge NSDictionary *)CGImageSourceCopyPropertiesAtIndex(source,0,NULL);
    NSMutableDictionary *mutableMetadata = [metadata mutableCopy];

    [mutableMetadata setLocation:self.currentLocation];

    CFStringRef UTI = CGImageSourceGetType(source);
    NSMutableData *data = [NSMutableData data];
    CGImageDestinationRef destination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef) data, UTI, 1, NULL);
    CGImageDestinationAddImageFromSource(destination,source, 0, (__bridge CFDictionaryRef) mutableMetadata);
    BOOL success = CGImageDestinationFinalize(destination);

    NSLog(@"This is the log value that was referenced above: %@",mutableMetadata);

只是一个猜测,但LongitudeRef=W可能意味着否定。看到向西的经度有负值。

只是一个猜测,但LongitudeRef=W可能意味着负值。看到向西的经度有负值。

N和E有正值 S和W有负值

然而,谷歌地图知道如何映射这些,如果你只是把参考坐标。
例如,在谷歌地图中(50.53467,-100.45646)等于N50.53467W100.45646

N和E具有正值 S和W有负值

然而,谷歌地图知道如何映射这些,如果你只是把参考坐标。
例如,在谷歌地图中(50.53467,-100.45646)等于N50.53467W100.45646

Martijn是正确的,lat lon值通常写为N30.xxx和E97.xxx,字母代表半球。转换为十进制度数时,NSEW转换为+/-。不知道为什么,但谷歌似乎选择转换GPS输出,这可能在NMEA中使用HDD.MMMMM并保留半球字符。

Martijn是正确的,lat lon值更常被写成N30.xxx和E97.xxx。字母代表半球。转换为十进制度数时,NSEW转换为+/-。不知道为什么,但谷歌似乎选择转换GPS输出,这很可能在NMEA中使用HDD.MMMMM并保留半球字符。

也有北参考和西参考以指示赤道以北和格林威治子午线以西。也有北参考和西参考以指示赤道以北和格林威治子午线以西有趣的问题:)有趣的问题:)是的西经度是负数,可能是因为东方先看到太阳。。。南面的纬度是负数。是的,西面的经度是负数,可能是因为东面先看到太阳。。。南边的纬度是负数,这很有趣。。。我想我将不得不改变一点输入,从NSEW值进行反向地理编码。但是,我可以肯定的是,你的例子不应该是
谷歌地图(50.53467,-100.45646)等于N50.53467W100.45646
,因为
W
是否定的吗?关于这个例子中的错误,我已经对这个例子进行了修改。谢谢你指出:)这很有趣。。。我想我将不得不改变一点输入,从NSEW值进行反向地理编码。但是,我可以肯定的是,你的例子不应该是
谷歌地图(50.53467,-100.45646)等于N50.53467W100.45646
,因为
W
是否定的吗?关于这个例子中的错误,我已经对这个例子进行了修改。谢谢你指出:)