如何在同一位置丢弃多个引脚

时间:2013-03-29 11:45:49

标签: iphone ios objective-c annotations mkmapview

嗨,可以在同一位置Lat Long的MKMapView上显示多个用户Pin。看到这个Bellow图像: -

enter image description here

在上图中我可以有一个两个用户定位引脚但由于相同的Lat长,我只能看到一个引脚。所以我的问题是可以在同一位置显示多个引脚。

如果我们无法在同一位置删除多个Pin,则可以在一个包含相同位置用户信息的引脚上显示多个AccessoryView

请指导我如何完成这项任务。

2 个答案:

答案 0 :(得分:1)

您需要创建一个自定义MKAnnotation类来执行此操作。

将多个引脚放在同一位置没有任何意义。 相反,您可以在同一个引脚中显示多个AccessoryView 为此,您需要创建UIView,列出您希望显示的所有引脚标题。

        [customAnnotationView.contentView addSubview:_contentView];
        customAnnotationView.contentWidth = _contentView.frame.size.width;
        customAnnotationView.contentHeight = _contentView.frame.size.height;

UIView是你设计的,所以你可以创建

这样的事情可以帮到你。enter image description here

答案 1 :(得分:0)

首先过滤掉唯一的位置记录。假设您在地图上显示10条记录,其中3条记录具有相同位置,其他2条记录具有其他相同位置,其余5条具有不同位置。所以在地图上应该有1个(3个相同记录)+1(2个相同记录)+5 = 7个地图上的引脚。

现在在方法

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation

check current annotation has more than 1 records same as annotation location and based on that do

if (ary.count > 1)
    {
        [annotationView setCanShowCallout:NO];
    }
    else
    {
        [annotationView setCanShowCallout:YES];
    }

然后在方法

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view

检查视图可以显示未标注的标注。做以下

if (![view canShowCallout])
{
  // means annotation has more than 1 records on same location 

 now get records of same location and display the way you want.
}