我的地图有两个自定义注释类:一个用于与某个位置相关的单个帖子,另一个用于这些帖子的集群。该集群存储指向它包含的所有帖子的指针,以及中心纬度/经度位置(使用它包含的帖子的位置计算)。我的行为是,当我单击集群注释时,它会删除该集群并将其帖子添加到地图中。我想要的是在将簇扩展为动画时更改引脚掉落注释,从而使新引脚从簇中心向外移动到新位置。然而,我也有一些帖子由于与其他点的距离而从未聚集在一起。显然他们不能有这个动画,因为没有相关的位置可供他们向外移动。有谁知道我如何实现这个?
让引脚从簇中心扩展实际上非常容易。当您制作新的单针注释时,将它们的坐标设置为簇中心:
id <MKAnnotation> pin;
CLLocationCoordinate2D clusterCenter;
// ...
pin.coordinate = clusterCenter;
In viewForAnnotation:
,不要为新引脚设置动画:
MKPinAnnotationView *pinView;
// ...
pinView.animatesDrop = NO;
然后,将图钉添加到地图视图后,您将通过动画将它们移动到真实位置:
MKMapView *mapView;
id <MKAnnotation> pin;
// ...
// probably loop over annotations
[mapView addAnnotation:pin];
NSTimeInterval interval = 1.0; // or whatever
[UIView animateWithDuration:interval animations:^{
// probably loop over annotations here again
CLLocationCoordinate2D realCoord;
// ...
pin.coordinate = realCoord;
}];
至于非聚集引脚的问题,在不了解详细实现的情况下很难回答,但我认为有很多可能性。您可以只使用一个简单的标志来跳过动画。或者你可以完全一样地对待它们,即使它们是单独的,仍然对它们进行“集群”,并且仍然为它们设置动画……效率不是最高,但它会起作用,并且你的代码会更干净。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)