gpt4 book ai didi

ios - 放置在覆盖层上时 MapKit 引脚标题不可见?

转载 作者:行者123 更新时间:2023-11-30 11:50:29 26 4
gpt4 key购买 nike

当我将图钉放在叠加层顶部时,图钉的标题似乎被遮挡。当图钉放置在不在叠加层顶部的点上时,标题将出现在图钉下方。

字符串lastCoordName是图钉的标题;该字符串从前一个 View Controller 传递到当前 View Controller (如下所示)。

这里有一些图片来描述我正在谈论的内容......

title shown上图显示了当图钉脱离覆盖层时图钉正下方的标题(“360”)。

title not shown但是,当图钉移动到覆盖层顶部的正确位置时,标题就会消失。

当水平绘制多段线并终止覆盖层时,标题仍然显示,因此问题不在于该线覆盖了标题。

这是自定义引脚类:

class CustomPin : NSObject, MKAnnotation {
var coordinate: CLLocationCoordinate2D
var title: String?

init(coordinate: CLLocationCoordinate2D, title: String) {
self.coordinate = coordinate
self.title = title

super.init()
}
}

viewDidLoad()的相关部分

    let pin = CustomPin(coordinate: endPoint, title: lastCoordName)//uses lastCoordName from previous vc (insead of looking up name of last node given coord)
mapView.addAnnotation(pin)
mapView.selectAnnotation(pin, animated: true)

以及mapViewController扩展

extension mapViewController: MKMapViewDelegate {

func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
if overlay is SchoolMapOverlay {
return SchoolMapOverlayView(overlay: overlay, overlayImage: #imageLiteral(resourceName: "GBSF1"))
} else if overlay is MKPolyline {
let lineView = MKPolylineRenderer(overlay: overlay)
lineView.strokeColor = UIColor(red:0.2, green:0.48, blue:1.00, alpha:1.0)
lineView.lineWidth = 10.0
return lineView
}
return MKOverlayRenderer()
}

func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {
let pin = MKPinAnnotationView(annotation: annotation, reuseIdentifier: "pin")
pin.canShowCallout = true

return pin
}
}

叠加层是否覆盖了图钉标题?如果是这样,为什么图钉及其标题不在同一级别(覆盖层上方)?

最佳答案

您可以设置叠加层绘制的图层
mapView.add(tileOverlay, level: .aboveRoads)

这会将其绘制在道路上方但标签下方。问题是,它位于所有标签下方;因此,根据您在 map 中显示的内容,您将不得不稍微使用标签。

MKOverlayLevel Documentation

关于ios - 放置在覆盖层上时 MapKit 引脚标题不可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48369013/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com