ios - SwiftUI 地图扩展添加 MKPolylineRenderer
问题描述
我找到了这篇文章,我正在尝试将功能添加到Map
.
我已经创建了这个扩展,我想在地图上显示一个覆盖。目前它没有被显示,我认为这是因为我没有指定MKPolylineRenderer
如何在此扩展中指定渲染器?
extension Map {
func mapStyle(_ mapType: MKMapType, showScale: Bool = true, showTraffic: Bool = false) -> some View {
let map = MKMapView.appearance()
map.mapType = mapType
map.showsScale = showScale
map.showsTraffic = showTraffic
return self
}
func addAnnotations(_ annotations: [MKAnnotation]) -> some View {
MKMapView.appearance().addAnnotations(annotations)
return self
}
func addOverlay(_ overlay: MKOverlay) -> some View {
MKMapView.appearance().addOverlay(overlay)
return self
}
}
看法
Map(coordinateRegion: .constant(MKCoordinateRegion(route.polyline.boundingMapRect)))
.addOverlay(route.polyline)
我知道我可以使用UIViewRepresentable
并且我正在使用它,但问题是它对触摸和四处移动反应不佳。它卡住了,滚动很困难。有了Map
它就可以完美运行。
解决方案
我认为使用 UIViewRepresentable 是目前唯一可行的解决方案,因为 SwiftUI Map 尚不支持 Overlays 和您可以在 UIKit Maps 中使用的其他功能。
如何阅读文档 ( https://developer.apple.com/documentation/mapkit/map ) SwiftUI 地图仅在特定位置显示区域和注释。
我认为将来会有更新,现在我认为这个解决方案是可以接受的:SwiftUI Map Overlays without UIViewRepresentable
推荐阅读
- javascript - 如何使用javascript在单击父行时使子行可见
- apache-kafka - 卡夫卡与 Kerberos
- xamarin - 绑定更改时 XAML 视图未更新
- gradle - Gradle 包装器在构建时找不到 javafx,内置 gradle 在构建时可以正常工作
- python - Tkinter 无法更新标签文本
- android - 如何在 android 中使用房间数据库更改 LiveData 可观察查询参数?
- typescript - 如何在打字稿中计算时区选择的日期时间
- python - 在 Scipy 中对真实数据进行曲线拟合时,如何解决“RuntimeWarning:exp 中遇到溢出”?
- swift - 如何快速突出显示表格视图单元格的一部分?
- php - PHP - php 文件返回空白页(VM - Ubuntu)