मैं GMSMapView पर 200 जीएमएसमार्कर प्रदर्शित करने के लिए एक ऐप विकसित कर रहा हूं, मैंने मार्कर प्रदर्शित करने के लिए 2 विधियों का प्रयास किया। विधि 1 थोड़ा धीमा है, लेकिन कोई त्रुटि नहीं होती है, हालांकि, विधि 2 वास्तविक डिवाइस पर सुचारू रूप से चलता है लेकिन मुझे आईएमओ सिम्युलेटरGMSThreadException आईओएस सिम्युलेटर पर GMSMarkers प्रदर्शित करते समय
पर प्रश्नों का परीक्षण किया गया है: 1. क्या विधि 2 का उपयोग करना जारी रखना ठीक है? 2. यदि विधि 2 का उपयोग करना ठीक नहीं है, तो पूरी प्रक्रिया के लिए लोडिंग समय को कम करने के लिए कोई अच्छा सुझाव?
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
किसी भी मदद Orz
Update1
सराहना की @ztan नीचे दिए रूप में, मैं मुख्य थ्रेड में यह सब क्या करना है, इस के अलावा कोई बेहतर समाधान है?
धन्यवाद नाम दिया गया है आप के लिए जवाब है, लेकिन कैसे यह काम करता है (विधि 2) एक वास्तविक डिवाइस पर एक त्रुटि के बिना? – johnnyman
Google मानचित्र iOA SDK की आवश्यकता है कि सभी ड्राइंग ईवेंट मुख्य थ्रेड पर किए जाएंगे, यहां तक कि 'चलो मर्कर = प्लेसमार्कर (समन्वय: location.coordinate)' को मुख्य थ्रेड के अंदर बुलाया जाना चाहिए। – ztan
आपको बहुत धन्यवाद मैं समझता हूं कि "Google मानचित्र iOA SDK आवश्यक है कि सभी ड्राइंग ईवेंट मुख्य थ्रेड पर किए जाएंगे" लेकिन मेरे प्रश्न हैं: जब मैं वास्तविक डिवाइस पर विधि 2 का उपयोग करता हूं तो कोई त्रुटि नहीं होती है। बीटीडब्ल्यू क्या आपके पास स्विफ्ट पर कोई अच्छा मार्कर क्लस्टर ट्यूटोरियल है? – johnnyman