Forward GeoCoding正在模拟器上运行,但不适用于iPhone

用户名

所以我有一个简单的应用程序,将地址作为字符串传递给视图,然后使用

    - (CLLocationCoordinate2D) geoCodeUsingAddress:(NSString *)address
{
    double latitude = 0, longitude = 0;
    NSString *esc_addr =  [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSString *req = [NSString stringWithFormat:@"http://maps.google.com/maps/api/geocode/json?sensor=false&address=%@", esc_addr];
    NSString *result = [NSString stringWithContentsOfURL:[NSURL URLWithString:req] encoding:NSUTF8StringEncoding error:NULL];
    if (result) {
        NSScanner *scanner = [NSScanner scannerWithString:result];
        if ([scanner scanUpToString:@"\"lat\" :" intoString:nil] && [scanner scanString:@"\"lat\" :" intoString:nil]) {
            [scanner scanDouble:&latitude];
            if ([scanner scanUpToString:@"\"lng\" :" intoString:nil] && [scanner scanString:@"\"lng\" :" intoString:nil]) {
                [scanner scanDouble:&longitude];
            }
        }
    }
    CLLocationCoordinate2D center;
    center.latitude = latitude;
    center.longitude = longitude;
    return center;
}

在模拟器上效果很好。将其加载到手机上后,我放置的引脚的坐标不再位于地址的经度/纬度,而是0,0。

这是怎么回事?提前致谢。

瑞菲尔

像这样更改您的方法:

 - (CLLocationCoordinate2D)geoCodeUsingAddress:(NSString *)address
    {
        double latitude = 0, longitude = 0;
        NSString *esc_addr =  [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        NSString *req = [NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/geocode/json?address=%@&sensor=false", esc_addr];
        NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:req]];
        NSError *err = nil;
        NSMutableDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&err];

        if (!err)
        {
            NSLog(@"status = %@",[jsonDict objectForKey:@"status"]);
            if ([[jsonDict objectForKey:@"status"] isEqualToString:@"OK"])
            {
                latitude = [[[[[[jsonDict objectForKey:@"results"] objectAtIndex:0] objectForKey:@"geometry"] objectForKey:@"location"] objectForKey:@"lat"] doubleValue];
                longitude = [[[[[[jsonDict objectForKey:@"results"] objectAtIndex:0] objectForKey:@"geometry"] objectForKey:@"location"] objectForKey:@"lng"] doubleValue];
            }
        }

        CLLocationCoordinate2D center;
        center.latitude = latitude;
        center.longitude = longitude;
        return center;
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从集合视图单元中拖动可在iPad模拟器上使用,但不适用于iPhone模拟器或Swift 4中的真实设备

RecyclerView 项目单击正在模拟器上运行,但在 kotlin 中不适用于物理

send_keys() 方法不适用于在 iPhone 模拟器上输入密码

Firestore 规则适用于模拟器但不适用于网站

Android 谷歌地图适用于模拟器,但不适用于真机

ApI AI 应用程序在网络模拟器上运行良好,但不适用于 Android 手机

SwiftUI·后台计时器适用于模拟器,但不适用于真实设备

应用程序是为模拟器创建的,但不适用于“通用iOS设备”

iOS 10.3 文本转语音适用于模拟器但不适用于设备

该应用程序适用于模拟器但不适用于实际设备

自动滑动适用于iOS 6模拟器,但不适用于iOS 7

通用链接适用于xcode8模拟器,但不适用于ios 10设备

React Native Android:请求适用于 android 模拟器,但不适用于 Play Store 构建

为什么`return {};`不适用于`std :: forward_list`?

适用于Xcode 6的iPhone 4模拟器

Android模拟器上的onKeyDown方法不适用于物理键盘DPAD

Facebook SDK登录不适用于iOS 10,Xcode 8上的模拟器

用std :: forward_as_tuple模拟std :: forward

WebView 仅适用于模拟器而不适用于设备

在Xcode中设置自定义类适用于iOS 9.1模拟器,但不适用于iOS 8.4

使用Detox运行模拟器的问题:[DetoxServer.js / CANNOT_FORWARD] role = testee未连接

Okhttp 模拟服务器不适用于 API 28 及以上模拟器

css3视口:适用于chrome模拟器,不适用于android手机

自定义 Alexa 技能不适用于回声点,但适用于模拟器

Firebase数据库安全性规则适用于模拟器,而不适用于Java代码

来自 URL 的颤动图像仅适用于模拟器,而不适用于物理设备

后台方法停止在设备上运行,仅适用于模拟器swift 4 xcode 9

MKAnnotation setImage可在iPhone上使用,但不适用于iPad / iPhone 6+

Android 模拟器主机文件不适用于 android 应用程序