1

我正在创建一个应用程序,它为美国各地的任何可用用户发送呼叫请求,同时通过地图覆盖和进度条更新呼叫发送者的进度。出于某种原因,无论我尝试使用 Grand Central Dispatch、CATransaction 等什么技巧,地图和进度条都不会更新到最后一步。请注意,我使用 Parse 作为后端,并在获得目的。

    dispatch_queue_t main_queue = dispatch_get_main_queue();
    PFQuery *repQuery = [PFQuery queryWithClassName:@"User"];
    [repQuery getObjectInBackgroundWithId:[_currentCallObject objectForKey:@"Rep"] block:^(PFObject *repUser, NSError *error) {
        PFGeoPoint *repLocation = [repUser objectForKey:@"location"];
        dispatch_async(main_queue, ^{
            CLLocationCoordinate2D coordinates[2];
            coordinates[0] = _repMapView.userLocation.coordinate;
            coordinates[1] = CLLocationCoordinate2DMake(repLocation.latitude, repLocation.longitude);
            MKPolyline *route = [MKPolyline polylineWithCoordinates:coordinates count:2];
            MKCircle *circle1 = [MKCircle circleWithCenterCoordinate:coordinates[0] radius:40000];
            MKCircle *circle2 = [MKCircle circleWithCenterCoordinate:coordinates[1] radius:40000];
            [_repMapView addOverlay:circle1];
            [_repMapView addOverlay:circle2];
            [_repMapView addOverlay:route];
            [_repMapView setNeedsDisplay];
            [_callProgressView setProgressToStep:4];
            [CATransaction flush];
        });
    }];

进度视图包含在一个单独的 .m 文件中,但覆盖在同一个 .m 文件中绘制,如下所示:

- (MKOverlayView *)mapView:(MKMapView *)map viewForOverlay:(id <MKOverlay>)overlay
{
    // MKCircle and MKPolyline handled here
}

我还将以下所有内容放在头文件中:MKMapViewDelegate, MKAnnotation, MKOverlay 另外,_repMapView.delegate = self; 在地图视图的初始绘图中设置。

我是否遗漏了一些明显的东西导致 UI 无法实时更新?

谢谢。

4

1 回答 1

0

啊,我在一个没有被输入的块内有那个代码,因为我假设的条件不是。验证它不是地图代码帮助我确定了这个非常基本的不相关问题。谢谢。

于 2013-02-25T23:10:11.177 回答