8

Tôi đã tải hình ảnh chú thích tùy chỉnh cho vị trí hiện tại của người dùng. Tôi đang cập nhật vị trí người dùng hiện tại sau mỗi 1 giây ở chế độ nền.Chuyển động trơn tru của hình ảnh chú thích trên Mapview

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]; 
} 

Sau khi cập nhật các latutude hiện tại và kinh độ tôi đang làm mới bản đồ sử dụng đoạn mã sau

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]; 

Nhưng mỗi lần nhấp nháy hình ảnh tùy chỉnh chú thích trước khi thêm vào map.How để tránh hiệu ứng nhấp nháy này?

Trả lời

3

Tôi chưa thử nghiệm điều này, nhưng dựa trên việc xem nhanh mã của bạn, tôi đoán vấn đề nằm trong việc xóa chú thích và sau đó thêm chú thích mới.

Bạn đã thử chỉnh sửa các thuộc tính của chú thích đã đính kèm chưa?

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]; 

Lưu ý: của Apple Documents đặc biệt gọi ra phương pháp 'setCoordinate' như cái gì đó nên được sử dụng để hỗ trợ kéo hoặc thường xuyên cập nhật.

+0

tôi biết vấn đề nằm trong việc loại bỏ và thêm chú thích trên bản đồ xem nhưng là có cách nào khác để làm điều này? Bạn có thể vui lòng cho tôi biết chi tiết những gì tôi nên làm gì? –

+0

Đã chỉnh sửa câu trả lời của tôi với mã mẫu – MobileVet

+0

Cảm ơn bạn đã trả lời. Nhưng nó không hoạt động. Vẫn cho tôi nhảy như hiệu ứng. –

1

bạn không được xóa chú thích khỏi bản đồ. Thay vào đó thay đổi tọa độ chú thích trong khối UIView beginAnimations-commitAnimations;

Nó sẽ giống như thế này:

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

Nó sẽ chạy trơn tru giữa các chú thích.

BR, Marcin Szulc

+0

Nó làm việc cho tôi, cảm ơn bạn rất nhiều! – FreeNickname

+0

trong swift 3 Tôi đã làm điều này và nó đã làm việc: – rara

0
//SWIFT 3 
UIView.beginAnimations("yourname", context: nil) 
UIView.setAnimationDuration(1.0) 
yourpin.coordinate = MKCoordinateForMapPoint(mycoordinate) 
UIView.commitAnimations() 
Các vấn đề liên quan