【问题标题】:Making map pins spread out from a cluster使地图针从集群中展开
【发布时间】:2011-10-25 08:42:00
【问题描述】:

我的地图有两个自定义注释类:一个用于与某个位置关联的单个帖子,另一个用于这些帖子的集群。集群存储指向它包含的所有帖子的指针,以及中心纬度/经度位置(使用它包含的帖子的位置计算)。我的行为是,当我单击集群注释时,它会删除集群并将其帖子添加到地图中。我想要的是在将集群扩展为动画时更改 pin-drop 注释,其中新的引脚从集群的中心向外移动到它们的新位置。但是,我也有一些帖子由于与其他点的距离而从不聚集。显然他们不能有这个动画,因为没有相关的位置让他们向外移动。有谁知道我如何实现这个?

【问题讨论】:

标签: iphone mkmapview mapkit mkannotation


【解决方案1】:

使引脚从集群中心展开实际上非常容易。当您制作新的单引脚注释时,将它们的坐标设置为集群中心:

id <MKAnnotation> pin;
CLLocationCoordinate2D clusterCenter;
// ...
pin.coordinate = clusterCenter;

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

关于非集群管脚的问题,如果不详细了解实现就很难回答,但我认为有很多可能性。你可以有一个简单的标志来跳过动画。或者你可以完全一样地对待它们,即使它们是单独的,仍然“聚集”它们,并且仍然为它们设置动画......不是最高效率,但它会工作并且你的代码会更干净。

【讨论】:

  • 由于某种原因我仍然看不到动画
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-18
  • 2011-12-21
  • 2015-05-12
  • 2017-06-13
  • 1970-01-01
  • 2020-03-25
  • 1970-01-01
相关资源
最近更新 更多