Swift地图和地图套件-添加覆盖并将其居中
我正在学习如何使用SwiftUI和MapKit, 我试着画一个圆,它可以工作,除非我不能在当前的地图中心将圆居中 如何使用MapView.centerCoordinate设置中心Swift地图和地图套件-添加覆盖并将其居中,swift,swiftui,mapkit,overlay,Swift,Swiftui,Mapkit,Overlay,我正在学习如何使用SwiftUI和MapKit, 我试着画一个圆,它可以工作,除非我不能在当前的地图中心将圆居中 如何使用MapView.centerCoordinate设置中心 //HERE let center: CLLocationCoordinate2D! = CLLocationCoordinate2D() // How to set center with the map center (MapView.centerCoordina
//HERE
let center: CLLocationCoordinate2D! = CLLocationCoordinate2D()
// How to set center with the map center (MapView.centerCoordinate) ?
首先,您应该在
makeUIView
中设置mapViewDelegate
,而不是updateUIView
,因为调用updateUIView
的次数太多,您只需要设置一次委派
您的问题来自这一行:
mapView.showsUserLocation = true
这意味着,当地图被实例化时,它将自动关注用户的位置
func addCircle(to view: MKMapView) {
// Lets put a defaut radius of 30 km
let radius: Double = 30
if !view.overlays.isEmpty { view.removeOverlays(view.overlays) }
let aCircle = MKCircle(center: view.centerCoordinate, radius: radius * 1000)
let mapRect = aCircle.boundingMapRect
view.setVisibleMapRect(mapRect, edgePadding: UIEdgeInsets(top: 50, left: 50, bottom: 50, right: 50), animated: true)
view.addOverlay(aCircle)
}
然后,在myMKMapViewDelegate
渲染器中:
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
guard let circleOverlay = overlay as? MKCircle else {
return MKOverlayRenderer()
}
let circleRenderer = MKCircleRenderer(overlay: circleOverlay)
circleRenderer.fillColor = .blue
circleRenderer.alpha = 0.1
return circleRenderer
}
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
guard let circleOverlay = overlay as? MKCircle else {
return MKOverlayRenderer()
}
let circleRenderer = MKCircleRenderer(overlay: circleOverlay)
circleRenderer.fillColor = .blue
circleRenderer.alpha = 0.1
return circleRenderer
}