I'm developing an app to display about 200 GMSMarkers on GMSMapView I tried 2 methods to display the markers. Method1 is a bit slow but no error occur, however, Method2 runs smoothly on a real device but I got GMSThreadException when I test it on iOS Simulator
Here are the questions: 1. Is it ok to keep using method2? 2. If it is not ok to keep using method2, any good suggestions to reduce the loading time for the whole process?
func Method1() {
for location in locationsArrayFromSomeWhere {
let placeMarker = PlaceMarker(coordinate: location.coordinate)
.
.//Simple Setup
.
placeMarker.map = self.mapView
}
}
func Method2() {
dispatch_async(dispatch_get_global_queue(Int(QOS_CLASS_USER_INITIATED.value), 0)) {
for location in locationsArrayFromSomeWhere {
let placeMarker = PlaceMarker(coordinate: location.coordinate)
.
.//Simple Setup
.
dispatch_async(dispatch_get_main_queue()) {
placeMarker.map = self.mapView
}
}
}
}
enter code here
Any help is appreciated Orz
UPDATE1
As @ztan answered below, I have to do all this in the main thread, is there any better solution than this?