8

पर एनोटेशन छवि का चिकना आंदोलन मैंने उपयोगकर्ता वर्तमान स्थान के लिए कस्टम एनोटेशन छवि लोड की है। मैं पृष्ठभूमि में प्रत्येक 1 सेकंड के बाद वर्तमान उपयोगकर्ता स्थान अपडेट कर रहा हूं।मैप्यूव

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
[self performSelectorOnMainThread:@selector(tempupdate) withObject:nil waitUntilDone:NO]; 
[pool release]; 

-(void)tempupdate 
{ 
    NSLog(@"callToLocationManager"); 
    mylocationManager = [[CLLocationManager alloc]init]; 
    NSLog(@"locationManagerM = %@",mylocationManager); 
    mylocationManager.delegate = self; 
    mylocationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    mylocationManager.distanceFilter = 500; 
    [mylocationManager startUpdatingLocation]; 
} 

वर्तमान latutude और देशांतर मैं कोड

MKCoordinateRegion region; 
MKCoordinateSpan span; 
span.latitudeDelta=0.002; 
span.longitudeDelta=0.002; 
CLLocationCoordinate2D location; 
location.latitude=[lat doubleValue]; 
location.longitude=[longt doubleValue]; 
region.span=span; 
region.center=location; 
addAnnotation=[[AddressAnnotation alloc]initWithCoordinate:location]; 
[email protected]"You are here"; 
[self.mapView removeAnnotations:self.mapView.annotations]; 
[self.mapView addAnnotation:addAnnotation]; 
[self.mapView setRegion:region animated:TRUE]; 
[self.mapView regionThatFits:region]; 

लेकिन map.How को जोड़ने इस झिलमिलाहट प्रभाव से बचने के लिए पहले हर बार कस्टम एनोटेशन छवि ब्लिंक निम्नलिखित का उपयोग कर नक्शा ताज़ा कर रहा हूँ अद्यतन करने के बाद?

उत्तर

3

मैंने अभी तक इसका परीक्षण नहीं किया है, लेकिन आपके कोड पर एक त्वरित नज़र के आधार पर, मुझे लगता है कि यह मुद्दा एनोटेशन को हटाने और फिर एक नया जोड़ने में निहित है।

क्या आपने पहले से ही संलग्न एनोटेशन गुणों को संपादित करने का प्रयास किया है?

NSArray* curAnnotations = [mapView annotations]; 
AddressAnnotation* aa = [curAnnotations lastObject]; // I am assuming you only have 1 annotation 
aa.mTitle = @"You are here"; // or don't do this if it never changes 
[aa setCoordinate:location]; 

नोट: एप्पल डॉक्स विशेष रूप से कुछ है कि खींचकर या अक्सर अपडेट समर्थन करने के लिए इस्तेमाल किया जाना चाहिए के रूप में 'setCoordinate' विधि बाहर कहते हैं।

+0

मैं इस मुद्दे को पता है को दूर करने और मानचित्र पर-व्यू पर एनोटेशन जोड़ने में निहित है लेकिन वहाँ यह करने के लिए किसी भी अन्य तरीका है? क्या आप मुझे विवरण में बता सकते हैं मुझे क्या करना चाहिए? –

+0

नमूना कोड – MobileVet

+0

के साथ मेरा जवाब संपादित किया उत्तर के लिए धन्यवाद। लेकिन यह काम नहीं कर रहा है। यह अभी भी मुझे प्रभाव की तरह कूदता है। –

1

आपको मानचित्र से एनोटेशन को नहीं हटा देना चाहिए। इसके बजाय UIView प्रारंभ में एनोटेशन समन्वय बदलें एनीमेशन-प्रतिबद्धएनीमेशन ब्लॉक;

वह कुछ इस तरह दिखेगा:

[UIView beginAnimations:@"yourAnimationName" context:nil]; 
[UIView setAnimationDuration:1.0]; 
[yourAnnotation setCoordinate:yourNewCoordinate]; 
[UIView commitAnimations]; 

यह सुचारू रूप से एनोटेशन पर आ जाएगा।

बीआर, मार्सिन Szulc

+0

यह मेरे लिए काम किया, बहुत बहुत धन्यवाद! – FreeNickname

+0

तेज़ 3 में मैंने यह किया और यह काम किया: – rara

0
//SWIFT 3 
UIView.beginAnimations("yourname", context: nil) 
UIView.setAnimationDuration(1.0) 
yourpin.coordinate = MKCoordinateForMapPoint(mycoordinate) 
UIView.commitAnimations()