3

我在 ios 应用程序中使用 google maps sdk,我在 mapview 上添加了一组标记。要添加到地图视图的标记数量过多,因此在将标记加载到地图上时会阻塞 UI。有没有其他方法可以将标记添加到不会阻塞 UI 的地图上?这就是我将标记添加到地图视图的方式。

GMSMarker *marker = [[GMSMarker alloc] init];
marker.position = location;
marker.icon = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:imageName ofType:@"png"]];
marker.title = title;
marker.animated = animated;
marker.tappable = tappable;
marker.map = _mapView;

上面的代码集使用 for 循环进行迭代,并创建标记并将其添加到地图中。

谢谢。

4

1 回答 1

1

将位置标记系列的整个设置(在我的情况下,我在 for 循环中进行)放在另一个线程中,然后该块将让视图先行,放置包括 for 循环的视图设置并显示每个标记映射回主线程。希望这有帮助=]

版本 1

dispatch_async(dispatch_get_global_queue(Int(QOS_CLASS_USER_INITIATED.value), 0)) {

        dispatch_async(dispatch_get_main_queue()) {
            for markers {
            let placeMarker = PlaceMarker()
                placeMarker.map = self.mapView
            }
        }
    }

版本 2,我发现此方法适用于我的 iPhone,但在模拟器上崩溃

dispatch_async(dispatch_get_global_queue(Int(QOS_CLASS_USER_INITIATED.value), 0)) {
        for markers {
            let placeMarker = PlaceMarker()
        dispatch_async(dispatch_get_main_queue()) {

                placeMarker.map = self.mapView
            }
        }
    }
于 2015-05-12T09:27:06.577 回答