找到lat和long返回0,0

时间:2011-12-20 05:41:32

标签: objective-c ios xcode google-maps geolocation

我正在使用Google来获取一个地址以获取其长度。我经历了大约60-65的地址。每次虽然我将随机获得5或6返回0,0坐标对。

每次失败的索引都不同,所以我确定它不是地址问题。

这是我用来返回lat和long

的代码

我可能是从for循环中调用此方法吗?也许这么快就一遍又一遍地调用它会导致它有时会被劈开吗?

-(CLLocationCoordinate2D)addressLocation:(NSString*)_address city:(NSString*)_city state:(NSString*)_state {
    NSString *temp = [NSString stringWithFormat:@"%@, %@, %@", _address, _city, _state];
    NSString *urlString = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@&output=csv", [temp stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

    NSError* error = nil;
    NSString *locationString = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlString ] encoding:NSASCIIStringEncoding error:&error];

    NSArray *listItems = [locationString componentsSeparatedByString:@","];
    double latitude = 0.0;
    double longitude = 0.0;

    if([listItems count] >= 4 && [[listItems objectAtIndex:0] isEqualToString:@"200"]) {
        latitude = [[listItems objectAtIndex:2] doubleValue];
        longitude = [[listItems objectAtIndex:3] doubleValue];
    }
    else {
        NSLog(@"Error: %@", [error description]);;
    }

    CLLocationCoordinate2D location;
    location.latitude = latitude;
    location.longitude = longitude;

    return location;
}

修改

如果其他人遇到麻烦,我现在找到了解决方法。

一旦找到每个地址的纬度和长度,我就会查看我的列表。

如果Google查询返回错误,我会将该地址添加到保留数组中。 意思是我通过了Firoze提到的速率限制。

完成初始运行后,我将浏览保持数组并找到每个地址的位置。

我确信有更清晰的实施,但对于那些无法获得营业执照的人来说,这是一种被黑客攻击的方式。

我希望这有帮助, 科里

1 个答案:

答案 0 :(得分:2)

你应该检查一下locationString是否为零。如果是这样,请查看错误。我的猜测是你的通话速度有限。

您应该查看Google针对此服务的服务条款。