嗨,可以在同一位置Lat Long的MKMapView
上显示多个用户Pin。看到这个Bellow图像: -
在上图中我可以有一个两个用户定位引脚但由于相同的Lat长,我只能看到一个引脚。所以我的问题是可以在同一位置显示多个引脚。
如果我们无法在同一位置删除多个Pin,则可以在一个包含相同位置用户信息的引脚上显示多个AccessoryView
。
请指导我如何完成这项任务。
答案 0 :(得分:1)
您需要创建一个自定义MKAnnotation类来执行此操作。
将多个引脚放在同一位置没有任何意义。 相反,您可以在同一个引脚中显示多个AccessoryView 为此,您需要创建UIView,列出您希望显示的所有引脚标题。
[customAnnotationView.contentView addSubview:_contentView];
customAnnotationView.contentWidth = _contentView.frame.size.width;
customAnnotationView.contentHeight = _contentView.frame.size.height;
UIView是你设计的,所以你可以创建
这样的事情可以帮到你。
答案 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.
}