在不同的引脚上显示自定义和默认标注视图,并在地图视图上进行引脚聚类

Posted

技术标签:

【中文标题】在不同的引脚上显示自定义和默认标注视图,并在地图视图上进行引脚聚类【英文标题】:Show custom and default callout views on different pins with pin clustering on map view 【发布时间】:2014-12-24 11:16:38 【问题描述】:

这是我的第一个问题,我是 ios 新手。 我正在地图视图上实现引脚聚类,这对于一种类型的引脚工作正常,但我的要求是在缩小时对具有不同集群计数的不同类型引脚进行聚类,即如果一种引脚在地图视图上显示河流细节而不是这些引脚应聚集在一起并对其进行计数,如果其他引脚在地图视图上显示转移的详细信息,则这些引脚应与河引脚分开聚集在一起并对其进行单独计数。其他 4 种不同的引脚也遵循相同的情况。

我还有一个问题,如何在同一地图视图上为上述不同类型的图钉实现不同的标注视图,即假设河图钉具有默认标注,其中包括标题、副标题和附件按钮。而在转移别针的另一边,我有自己的自定义调出视图。所以现在我想要的是,当我点击河图钉时,默认标注应该弹出,当我点击转移图钉时,我自己的自定义标注应该弹出。其他类型的图钉也一样。

请帮帮我。从过去两周开始,我一直在处理这些问题,但对我来说没有任何效果。请帮帮我,我非常想要解决这些问题。

注意:自定义标注和默认标注应使用 pin 集群实现。

【问题讨论】:

【参考方案1】:

我制作了一个demo,可以解决你关于自定义调出和默认调出的问题。

Answer

将指导您如何创建自定义标注并为其添加引脚。

此代码包含PinAnnotation,它是MKAnnotation 的子类,用于显示自定义调用。

对于默认调用视图,您只需将MKAnnotation 添加到映射,它将显示默认视图。

如果您愿意,您可以如何自定义它并为其创建另一个子类。

使用自定义调出视图测试默认调出。从该答案链接或直接从 here 下载演示项目。

viewDidLoad() 末尾添加以下代码并运行应用程序。

MKPointAnnotation *pin = [[MKPointAnnotation alloc] init];
pin.coordinate = CLLocationCoordinate2DMake(34.65515f, 133.81951f);
pin.title = @"Default Pin";

[self.mapView addAnnotation:pin];

如下图所示:

【讨论】:

感谢您@Kampai 的回答,但我已经在我的地图视图上实现了默认和自定义标注,没有引脚聚类。但我希望在同一张地图中有 2 个不同的集群,具有不同的标注视图。 据我所知,您一次可以显示一种类型的集群。但是,如果有人确实为同一个集群提供了混合图像,那么它看起来就像是不同的集群,并且会根据一些限制进行调用。 实际上我也实现了这种方式,但问题是在实现集群时我无法为不同的引脚实现默认和自定义标注。如果你有这个问题的解决方案或任何建议,我非常想要它。谢谢 你看过我的演示吗,实际上在MKAnnotationView 上调用了作品,你需要创建它的子类。你只需要在viewForAnnotation: 中添加条件来决定调用视图。你试过这个吗? 非常感谢@Kampai .. 在您的演示标注代码的帮助下,我的问题得到了解决。再次感谢您

以上是关于在不同的引脚上显示自定义和默认标注视图,并在地图视图上进行引脚聚类的主要内容,如果未能解决你的问题,请参考以下文章

标注在 MKMapView - iPhone 的引脚后面弹出

iOS:地图视图注释未显示针脚

带有默认地图视图引脚的 Swift Mapview 自定义调出视图

始终在地图视图的中心显示 Pin 并在 ios 中计算纬度、地址

如何在表格视图单元格中快速自定义和实现滑块

MapKit 通过自定义引脚和标注路由