在地图上显示用户的位置

时间:2014-02-03 18:29:37

标签: ios iphone uiviewcontroller mapkit

我正在创建一个包含地图和用户的应用程序。我从Web服务器接收用户的位置。每隔5秒我就会有新用户获得新的网络数据,我将用户添加到地图中:

// after parsing web response I call
[self.delegate addUserOnMap:user];

// and add users to the map
MKPointAnnotation *point = [[MKPointAnnotation alloc] init];
CLLocationCoordinate2D location;
location.latitude = [user.uLat doubleValue];
location.longitude = [user.uLon doubleValue];
point.coordinate = location;
point.title = [NSString stringWithFormat:@"Id: %@", user.uId];
point.subtitle = [NSString stringWithFormat:@"Distance: %@", user.uDistance];
[self.mapView addAnnotation:point];

但在地图上添加所有新用户之前,我删除了所有当前用户:

id userLocation = [self.mapView userLocation];
NSMutableArray *pins = [[NSMutableArray alloc] initWithArray:[self.mapView annotations]];
if (userLocation != nil)
{
    [pins removeObject:userLocation]; // avoid removing user location off the map
}
[self.mapView removeAnnotations:pins];
pins = nil;

所以,在完成所有这些之后,我的引脚闪烁,我不喜欢这个。我该如何解决?

1 个答案:

答案 0 :(得分:1)

您将不得不停止删除所有注释以避免这种情况。这会导致注释的视图从视图层次结构中删除,然后重新创建。

更好的方法是在您自己的类中实现MKAnnotation,而不是使用MKPointAnnotation并添加用于存储“触摸”时间戳的属性。然后,在进行传递时,更新要保留的所有注释的时间戳,然后执行删除传递以删除具有过期时间戳的所有注释。