微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SwiftUI MapKit - 同一地图中的多个注释

如何解决SwiftUI MapKit - 同一地图中的多个注释

我看过类似的问题,但似乎没有什么能准确回答这个问题。

我有一个地图视图,我想在它上面添加图钉叠加层以及折线路线叠加层。我是 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...

enter image description here

非常感谢您的帮助。谢谢

解决方法

它应该是一个单独的方法,但不应该是 private。此外,返回类型应为 MKOverlayRenderer

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?