根据多个点的纬度和经度获取地址

时间:2014-03-21 23:40:20

标签: ios objective-c

我正在尝试遍历大约10个纬度和经度值的数组,并从中获取地址。我使用Xcode创建了一个控制台应用程序,我可以循环文件并检索位置,将它们添加到NSMutableArray并将其传递给下面的函数。但是,永远不会调用完成处理程序块。我能做错什么?如果您需要在此处查看任何其他代码,请告诉我们。我只是感到沮丧和困惑,并想知道它会是什么。

void nextGeocodeRequest(int start, NSMutableArray * myLocations)
{
    @autoreleasepool {
        for (int i = start; i < 1; i++)  {
            [ myLocations objectAtIndex:i ];
            double mylong = [[[myLocations objectAtIndex:i] valueForKey:@"Longitude"] doubleValue ];
            double mylat = [[[myLocations objectAtIndex:i] valueForKey:@"Latitude"] doubleValue];
            goal = [[CLLocation alloc] initWithLatitude: mylat longitude:mylong] ;

            CLGeocoder * geocoder = [[CLGeocoder alloc]init];
            [geocoder reverseGeocodeLocation:goal completionHandler:^(NSArray *placemarks, NSError *error) {
                NSLog(@"Found placemarks: %@, error: %@", placemarks, error);
                if (error == nil && [placemarks count] > 0) {
                    placemark = [placemarks lastObject];

                    NSLog(@"this is the state '%@'",placemark.locality);
                    /*
                     self.state = [[State alloc] init];
                     self.state.name = placemark.locality;
                     self.state.code = placemark.administrativeArea;
                     self.state.stateId = 1;
                     self.state.stations = 300;
                     [self.states addObject:self.state];
                     */
                    //[self.tableView reloadData];

                    nextGeocodeRequest(i, myLocations);
                } else {
                    NSLog(@"%@", error.debugDescription);
                }
            }];
        } //ends the for
    // return 0;
    }
}

1 个答案:

答案 0 :(得分:1)

您需要run main函数末尾的当前NSRunLoop,以便处理地理编码连接。然后,您需要定义在处理完所有连接后应用程序的终止方式。

[[NSRunLoop currentRunLoop] run];

(将其放在主要功能的自动发布池末尾)

目前,您的应用会执行所有内联处理,准备许多连接,无需处理它们,然后只需退出。