0

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

在此处输入图像描述

在上图中,我可以有两个用户位置图钉,但由于相同的纬度,我只能看到一个图钉。所以我的问题是,是否可以在同一位置显示多个图钉。

如果我们不能在同一位置放置多个 Pin,则可以AccessoryView在一个包含相同位置用户信息的 Pin 上显示多个。

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

4

2 回答 2

1

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

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

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

UIView 是您设计的,因此您可以创建它

像这样的东西可以帮助你。在此处输入图像描述

于 2013-03-29T12:50:24.723 回答
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.
}
于 2016-06-29T06:51:14.197 回答