Sto sviluppando un'applicazione per visualizzare circa 200 GMSMarkers su GMSMapView Ho provato 2 metodi per visualizzare i marcatori. Method1 è un po 'lento ma non si verifica alcun errore, tuttavia, Method2 gira senza problemi su un dispositivo reale ma ho ottenuto GMSThreadException quando lo collaudo su iOS SimulatorGMSThreadException si verificano durante la visualizzazione di GMSMarkers su iOS Simulator
Ecco le domande: 1. Va bene continuare a utilizzare method2? 2. Se non è corretto continuare a utilizzare method2, qualche buon suggerimento per ridurre il tempo di caricamento dell'intero processo?
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
Ogni aiuto è apprezzato Orz
Update1
Come @ztan risposto di seguito, devo fare tutto questo nel thread principale, c'è una soluzione migliore di questo?
Grazie per si risponde, ma come mai funziona (metodo 2) su un dispositivo reale senza errori? – johnnyman
Google Maps SDK iOA richiede che tutti gli eventi di disegno vengano eseguiti sul thread principale, anche "lasciare placeMarker = PlaceMarker (coordinate: location.coordinate)" deve essere chiamato all'interno del thread principale. – ztan
Grazie mille Capisco che "l'SDK iOA di Google Maps RICHIEDE che tutti gli eventi di disegno vengano eseguiti sul thread principale" ma le mie domande sono: Perché non si verificano errori quando utilizzo il metodo 2 su un dispositivo reale. btw hai qualche buon tutorial sui cluster di pennarelli su swift puoi consigliarlo? – johnnyman