0

我有一本从 plist 加载的字典。我遍历了我的数组,它总共包含 4000 个经纬度。

我使用 GCD 在后台线程上处理 for 循环(因为它在处理时锁定 UI)并在此任务中添加覆盖,如下所示。

一切正常,除了将所有叠加层添加到地图仅在整个数组循环完成后出现。如果我想遍历数组并一次将 x1 覆盖添加到视图中,而不是等待总数处理,我会这样做。

-(void)loadOverlays{

dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    // Add code here to do background processing
    int d;
    for (d = 0; d < [[tempDict allValues]count]; d++) {

        //Get values from dic
        values = [tempDict allValues];
        id aValue = [values objectAtIndex:d];

        latCircle = [aValue objectAtIndex:1];
        lngCircle = [aValue objectAtIndex:2];

        geoFCenter = CLLocationCoordinate2DMake([latCircle floatValue], [lngCircle floatValue]);
        geoFRadius = 10000.0; // 10,000 metres

        //Add Zone circle
        circle = [MKCircle circleWithCenterCoordinate:geoFCenter radius:geoFRadius];
        [circle setTitle:@"2"];

        [self.dragMap addOverlay:circle];

    }
});

}

4

1 回答 1

1

Have you tried using DISPATCH_QUEUE_PRIORITY_BACKGROUND instead of DISPATCH_QUEUE_PRIORITY_DEFAULT?

于 2013-08-05T21:56:29.190 回答