我想每5秒更新一次mapview上某些註釋的圖像,但是我不想刪除並重新添加到地圖中,因爲這會導致它們「閃爍」或刷新,(即disapear然後重新出現)。我希望它是無縫的。在不閃爍的情況下更新MKannotation圖像
我已經試過如下:
//get the current icon
UserAnnotation *annotation = [self GetUserIconWithDeviceId:deviceId];
//make a new annotation for it
UserAnnotation *newAnnotation = [[UserAnnotation alloc]
initWithCoordinate: userCoordinates
addressDictionary:nil];
newAnnotation.title = name;
newAnnotation.userDeviceId = deviceId;
NSInteger ageIndicator = [[userLocation objectForKey: @"ageIndicator"] integerValue];
newAnnotation.customImage = [UserIconHelpers imageWithAgeBorder:ageIndicator FromImage: userImage];
//if its not there, add it
if (annotation != nil){
//move it
//update location
annotation.coordinate = userCoordinates;
//add new one
[self.mapView addAnnotation: newAnnotation];
//delete old one
[self.mapView removeAnnotation: annotation];
} else {
//just addd the new one
[self.mapView addAnnotation: newAnnotation];
}
這樣一想,如果我加在上面的新圖標然後我可以刪除舊的圖標,但仍引起了閃爍。
有沒有人有任何想法?
哇!完美的,非常感謝你,我以爲我不能夠做到這一點,不知道這種觀點ForFornotation方法 - 非常方便。 – RodH257 2011-06-16 17:55:12
請記住,如果您使用委託方法mapView:viewForAnnotation:with reusableIdentifiers,它可以重用您剛更改圖像的視圖。 – Toydor 2014-06-01 08:17:42
@Toydor,是的。在viewForAnnotation方法中,它應該具有根據註釋當前狀態設置圖像的邏輯(無論導致您更新圖像的狀態)。 – Anna 2014-06-01 14:47:24