位置服务不返回附近

时间:2014-07-17 21:31:01

标签: ios objective-c location

我使用的代码将在此之后发布,以根据用户使用自然语言查询在UITextField中键入的内容返回最近的位置。我将所有位置存储在一个数组中,并将该数组传递给prepareForSegue中的下一个场景(UITableViewController)。比我使用数组加载所有的地方。在模拟器上,它显示了Apple有意义的所有默认位置。但是,我在真正的iPhone上测试它,尽管为应用程序启用了位置服务,但我仍然得到默认位置。我一次又一次地尝试,但我无法得到实际的结果。几周前它曾经工作过一次,但从那以后它就停止了。有任何想法吗?这是代码:

- (void) performSearch {
    NSLog(_searchLabel.text);
    MKLocalSearchRequest *request =
    [[MKLocalSearchRequest alloc] init];

    request.naturalLanguageQuery = _searchLabel.text;
    _foundPlaces = [[NSMutableArray alloc] init];
    _foundPlacesD = [[NSMutableArray alloc]init];
    //NSLog(_place);
    MKLocalSearch *search =
    [[MKLocalSearch alloc]initWithRequest:request];

    [search startWithCompletionHandler:^(MKLocalSearchResponse
                                         *response, NSError *error) {
        if (response.mapItems.count == 0)
            NSLog(@"No Matches");
        else{
            for (MKMapItem *item in response.mapItems)
            {
                NSString *n = item.name;

                [_foundPlaces addObject:n];

                NSLog(n);
                MKDirectionsRequest *dr = [MKDirectionsRequest new];
                MKMapItem *source = [MKMapItem mapItemForCurrentLocation];
                [dr setSource:source];
                [dr setDestination:item];
                MKDirections *directions = [[MKDirections alloc]initWithRequest:dr];
                [directions calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse *mresponse, NSError *error) {
                    if(mresponse.routes.count == 0){
                        NSLog(@"No routes");
                    }
                    else{
                        for(MKRoute *route in mresponse.routes){
                            CLLocationDistance d = route.distance/1000;
                            NSString *dText = [NSString stringWithFormat:@"%g kilometers", d];
                            [_foundPlacesD addObject:dText];
                            NSLog(dText);
                        }
                    }
                }];

            }
            [self performSegueWithIdentifier:@"locationResults" sender:self];
        }
    }];
}

1 个答案:

答案 0 :(得分:0)

我相信我修好了。错误是segue在完成之外执行,应该在内部执行。