ios - 在 MapKit 中的多边形中心添加标签

标签 ios swift mapkit mkpolygon

有类似名称的问题,例如 this one ,但这不是我要找的。

基本上,我在标准 map 上绘制了一堆 MKPolygon,为它们赋予了笔触、随机颜色等。我希望能够给它们“命名”,添加一个标签或带有标签的 UIView,这样看起来不错。这可能吗?

这是我的 map 的样子

enter image description here

下面是实现

func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {

    if overlay is MacaronMKPolygon {

        let macaronOverlay = overlay as! MacaronMKPolygon

        let polygonView = MKPolygonRenderer(overlay: macaronOverlay)
        polygonView.strokeColor = UIColor.gray
        polygonView.lineWidth = 1
        polygonView.alpha = shouldShowMacaron ? 1.0 : 0.0
        polygonView.fillColor = macaronOverlay.color
        return polygonView

    }

    return MKOverlayRenderer()
}

最佳答案

所以 MKPolygon 的一个好处是它的核心实际上是一种 MKMultiPoint,它继承自 MKShape,它是 MKAnnotation 的子类。只需按照文档从 MKPolygon 一直往下看即可。

所以最好的部分是 MKPolygon 需要符合 MKAnnotation 并因此定义坐标属性。定义为注释的中心。

polygonView.coordinate

因此,这将为您提供 Apple 定义的多边形中心。不幸的是,现在多边形的形状很奇怪,它可能不是真正的中心,但应该足够接近了。很高兴我们能从 Apple 免费获得一些东西。

使用此坐标,您可以创建一个 MKAnnotation 和 MKAnnotationView 以放置在您的叠加层上。

关于ios - 在 MapKit 中的多边形中心添加标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44142184/

相关文章:

iphone - 问题从mapView删除注释

iphone - 在电影播放器​​上按“完成”后恢复纵向?

ios - 在 NavigationItem 中从右侧动画化 UIBarButtonItem

ios - 从mp3格式的视频中提取音频

swift - 在watchOS应用程序上输出汉字

ios - Xcode 6 Storyboard不显示我的观点

objective-c - 使用 CLLocation 对象作为字典中的键

objective-c - 从其他现有类访问 NSMutableArray

ios - heightForRowAtIndexPath 被调用,但高度没有改变

swift - 将带有坐标的单个字符串转换为 CLLocationCoordinate2D 数组,并使用该数组在 mapView 中生成多边形