嗨,可以MKMapView
在 Lat Long 的同一位置显示多个用户 Pin 图。看到这个波纹管图像: -
在上图中,我可以有两个用户位置图钉,但由于相同的纬度,我只能看到一个图钉。所以我的问题是,是否可以在同一位置显示多个图钉。
如果我们不能在同一位置放置多个 Pin,则可以AccessoryView
在一个包含相同位置用户信息的 Pin 上显示多个。
请指导我如何完成这项任务。
嗨,可以MKMapView
在 Lat Long 的同一位置显示多个用户 Pin 图。看到这个波纹管图像: -
在上图中,我可以有两个用户位置图钉,但由于相同的纬度,我只能看到一个图钉。所以我的问题是,是否可以在同一位置显示多个图钉。
如果我们不能在同一位置放置多个 Pin,则可以AccessoryView
在一个包含相同位置用户信息的 Pin 上显示多个。
请指导我如何完成这项任务。
您将需要创建一个自定义 MKAnnotation 类来执行此操作。
在同一位置放置多个引脚没有任何意义。相反,您可以在同一个 pin 中显示多个 AccessoryView 为此,您需要创建 UIView 来列出您希望显示的所有 pin 标题。
[customAnnotationView.contentView addSubview:_contentView];
customAnnotationView.contentWidth = _contentView.frame.size.width;
customAnnotationView.contentHeight = _contentView.frame.size.height;
UIView 是您设计的,因此您可以创建它
像这样的东西可以帮助你。
首先过滤掉唯一的位置记录。假设您有 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.
}