问题描述
我看过类似的问题,但似乎没有什么能准确回答这个问题。
我有一个地图视图,我想在它上面添加图钉叠加层以及折线路线叠加层。我是 SwiftUI 开发人员的新手(这是我的第一个应用程序),因此不胜感激。
目前地图只渲染图钉,而不是覆盖层。我假设它们需要放入相同的方法中,但无法弄清楚如何将多个叠加层返回到 mapView。
这是协调器代码:
class Coordinator: NSObject,MKMapViewDelegate{
func mapView(_ mapView: MKMapView,viewFor annotation: MKAnnotation) -> MKAnnotationView? {
//draw pins
if annotation.isKind(of: MKUserLocation.self){return nil}
else{
let pinAnnotation = MKPinAnnotationView(annotation: annotation,reuseIdentifier: "PIN_VIEW")
pinAnnotation.tintColor = .red
pinAnnotation.animatesDrop = true
pinAnnotation.canShowCallout = true
return pinAnnotation
}
}
private func mapView(_ mapView: MKMapView,rendererFor overlay: MKOverlay) -> MKpolylineRenderer? {
//draw route
let render = MKpolylineRenderer(overlay: overlay)
render.strokeColor = .orange
render.linewidth = 2
return render;
}
}
这是输出:(没有绘制路线)。我试图将注释放在同一个方法中,但无法弄清楚如何同时返回两者(引脚类型为 MKAnnotationView,路由类型为 MKpolylineRenderer...
非常感谢您的帮助。谢谢
解决方法
它应该是一个单独的方法,但不应该是 private
。此外,返回类型应为 MKOverlayRenderer
。