Ios Can';t循环地理编码?
目前我正在为iPad开发一个应用程序,在某一点上,它应该会显示一个城市列表,这些城市旁边是用户当前位置的距离 我使用的是一个循环,它使用了我之前构建的数据库。代码如下:Ios Can';t循环地理编码?,ios,for-loop,geolocation,clgeocoder,Ios,For Loop,Geolocation,Clgeocoder,目前我正在为iPad开发一个应用程序,在某一点上,它应该会显示一个城市列表,这些城市旁边是用户当前位置的距离 我使用的是一个循环,它使用了我之前构建的数据库。代码如下: NSString *address = [NSString stringWithFormat:@"%@, Nederland", [info2 objectForKey:@"stadsnaam"]]; [self.geocoder geocodeAddressString:address completionHandle
NSString *address = [NSString stringWithFormat:@"%@, Nederland", [info2 objectForKey:@"stadsnaam"]];
[self.geocoder geocodeAddressString:address completionHandler:^(NSArray *placemarks, NSError *error) {
CLPlacemark *placemark = [placemarks objectAtIndex:0];
CLLocation *location = placemark.location;
CLLocationCoordinate2D firstLocation = location.coordinate;
NSLog(@"%f,%f", firstLocation.latitude, firstLocation.longitude);
}];
这段代码位于for循环中。但第一次运行时,它只返回0.0000
第二次激活循环时(我确信它运行了不止一次),它只返回当前位置和第一个城市之间的距离
该应用程序从这段代码中获取城市名称:[NSString stringWithFormat:@“%@,荷兰”,[info2 objectForKey:@“Statsnaam”]
我已经验证过了,而且有效。我希望避免使用GoogleAPI,因为我每天的请求量可能会超过最大值XD
感谢您的帮助,如果有任何不清楚的地方,请通知我,并提前感谢 您需要阅读-geocodeAddressString:completionHandler:
:
启动前向地理编码请求后,不要尝试启动另一个前向或反向地理编码请求
您可以使用CLGeocoder的
geocoding
属性来确定是否正在进行地理编码操作。块内有任何错误吗?firstLocation=placemarks[0]。location.coordinate;我可能完全错了。但在同一个应用程序的早期阶段,我搜索了一个位置,用户可以在其中简单地键入他的家乡。它工作多次。这和那有什么不同?@ChrisvanSchayk。您尝试创建的循环尝试地理编码操作的速度要比您键入家乡名称并点击按钮的速度快得多。您的旧应用程序可能工作正常,因为地理编码器恰好在提交下一个请求之前完成。有道理。。。谢谢@Caleb!好的,我实际上通过在每次迭代中做一个延迟为0.05秒的循环来修复它!现在它可以工作了^^^,而且还提供了很好的视觉效果。。也许我会添加一些动画到它现在我在它。再次感谢你,卡莱布!很乐意帮忙。您还应该检查geocoding
属性——在大多数情况下,0.05秒可以,但是网络连接速度慢或其他因素很容易导致这种情况发生变化。