iOS地图叠加未更新

时间:2013-02-25 15:32:28

标签: ios objective-c multithreading overlay mapkit

我正在创建一个应用程序,该应用程序为美国境内的任何可用用户发送呼叫请求,并在此期间通过地图叠加层和进度条更新呼叫发件人。出于某种原因,无论我使用Grand Central Dispatch,CATransaction等尝试过什对象

    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;已在地图视图的初始绘图中设置。

我是否遗漏了一些明显的因素导致用户界面无法实时更新?

感谢。

1 个答案:

答案 0 :(得分:0)

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