我正在使用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提到的速率限制。
完成初始运行后,我将浏览保持数组并找到每个地址的位置。
我确信有更清晰的实施,但对于那些无法获得营业执照的人来说,这是一种被黑客攻击的方式。
我希望这有帮助, 科里
答案 0 :(得分:2)
你应该检查一下locationString是否为零。如果是这样,请查看错误。我的猜测是你的通话速度有限。
您应该查看Google针对此服务的服务条款。