Objective c 发布前向地理编码多个地址
我正在连接一个远程web服务,它基本上返回XML。然后我将XML解析为一个属性对象(想想真实状态之类的东西) 但是现在,web服务仅返回每个属性的邮政编码。它不提供我在地图中放置注释所需的坐标。我可以通过邮政编码对地址进行地理编码。但是,我的问题是它不允许我执行多个请求 这是我的密码Objective c 发布前向地理编码多个地址,objective-c,ios5,geocode,clgeocoder,Objective C,Ios5,Geocode,Clgeocoder,我正在连接一个远程web服务,它基本上返回XML。然后我将XML解析为一个属性对象(想想真实状态之类的东西) 但是现在,web服务仅返回每个属性的邮政编码。它不提供我在地图中放置注释所需的坐标。我可以通过邮政编码对地址进行地理编码。但是,我的问题是它不允许我执行多个请求 这是我的密码 - (void)processProperties:(Property *)property { [geocoder geocodeAddressString:property.postalCode
- (void)processProperties:(Property *)property {
[geocoder geocodeAddressString:property.postalCode
completionHandler:^(NSArray* placemarks, NSError* error){
placemark = [placemarks lastObject];
for (CLPlacemark* aPlacemark in placemarks)
{
[sublet setLatitude:aPlacemark.location.coordinate.latitude];
[sublet setLongitude:aPlacemark.location.coordinate.longitude];
}
}];
}
- (void)addAnnotations:(NSArray *)objects {
CLLocationDegrees lat;
CLLocationDegrees longitude;
CLLocationCoordinate2D mCoords;
NSString *fullAddress;
// Add the annotations found nearby
for (Property *property in objects) {
[self processProperties:property];
lat = property.latitude;
longitude = property.longitude;
fullAddress = [NSString stringWithFormat:@"%@ %@ %@", property.houseNumber, @" ", property.streetName];
[self createAnnotationWithCoords:mCoords :fullAddress :[NSString stringWithFormat:@"$%.2f", property.rent]];
}
zoomLevel = 0.1;
mCoords = CLLocationCoordinate2DMake(lat,longitude);
MKCoordinateRegion region = MKCoordinateRegionMake(mCoords,MKCoordinateSpanMake(zoomLevel,zoomLevel));
[self.mapView setRegion:region animated:YES];
}
出于某种原因,它只是对1属性进行地理编码。没有相应地通过循环
各位有什么想法吗?在你的前进地理功能中使用这个。geocoder需要重新发布和初始化才能开始一个新地址,希望这能有所帮助
- (void)processProperties:(Property *)property {
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder geocodeAddressString:property.postalCode
completionHandler:^(NSArray* placemarks, NSError* error){
placemark = [placemarks lastObject];
for (CLPlacemark* aPlacemark in placemarks)
{
[sublet setLatitude:aPlacemark.location.coordinate.latitude];
[sublet setLongitude:aPlacemark.location.coordinate.longitude];
}
[geocoder release];
}];
}
苹果似乎建议每个应用程序会话只进行一次地理编码,这是非常有限的。你是对的,他们似乎通过只允许一个实例一次调用来强制执行这一点。创建多个实例解决了这个问题,但必须这样做确实是件奇怪的事情。