快速地图视图不显示圆圈叠加已解决

问题描述 投票:0回答:1

正确的代码在解决方案中。我提到的下面的错误是在解决方案中发生的。

您好,我自己解决了这个问题,但这里是在地图套件中的区域顶部显示圆圈的代码。您只需提供一个州和城市,它就会在该区域的顶部放置一个圆圈。当我运行这段代码时,一切正常,但我在输出中得到了这个

“缺少 (6/6) 地面瓷砖的地面网格层的 MeshRenderables。瓷砖调试信息:(密钥:0.2.2.255 t:34 kt:0,有网格错误:0,MeshInstance 计数:1,PendingMaterial 计数:1,不可见 MeshInstances 计数:0 | 键:1.0.2.255 t:34 kt:0,有网格错误:0,MeshInstance 计数:2,PendingMaterial 数量:2,Invisible MeshInstances 数量:0 |"

如果有人知道如何获得此 ID,请感谢您的帮助。

import SwiftUI
import MapKit

struct MapView: UIViewRepresentable {
    let region: MKCoordinateRegion
    let circleRadius: CLLocationDistance
    @Binding var regionToDisplay: MKCoordinateRegion?
    
    func makeUIView(context: Context) -> MKMapView {
        MKMapView()
    }
    func updateUIView(_ view: MKMapView, context: Context) {
        view.setRegion(region, animated: true)
        let circle = MKCircle(center: region.center, radius: circleRadius)
        view.addOverlay(circle)
    }
    func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
        let circleRenderer = MKCircleRenderer(overlay: overlay)
        circleRenderer.strokeColor = UIColor.black
        let greenColorWithOpacity = UIColor.green.withAlphaComponent(0.5)
        circleRenderer.fillColor = greenColorWithOpacity
        circleRenderer.lineWidth = 3.0
        return circleRenderer
    }
}
swift xcode swiftui mapkit
1个回答
0
投票
import SwiftUI
import MapKit

struct MapView: UIViewRepresentable {
    @State private var coordinate = CLLocationCoordinate2DMake(45.5202471, -122.6741949)
    let city: String
    let state: String

    func makeUIView(context: Context) -> MKMapView {
        let mapView = MKMapView()
        mapView.delegate = context.coordinator

        let geocoder = CLGeocoder()
        let address = "\(city), \(state)"
        geocoder.geocodeAddressString(address) { placemarks, error in
            if let placemark = placemarks?.first, let location = placemark.location {
                self.coordinate = location.coordinate
                mapView.setCenter(self.coordinate, animated: true)
                
                let region = MKCoordinateRegion(center: coordinate, latitudinalMeters: 10000, longitudinalMeters: 10000)
                mapView.setRegion(region, animated: true)

                let regionRadius = 3500.0
                let circle = MKCircle(center: coordinate, radius: regionRadius)
                mapView.addOverlay(circle)
            }
        }
        return mapView
    }

    func updateUIView(_ uiView: MKMapView, context: Context) {}

    func makeCoordinator() -> Coordinator {
        Coordinator()
    }

    class Coordinator: NSObject, MKMapViewDelegate {
        func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
            if let circle = overlay as? MKCircle {
                let circleRenderer = MKCircleRenderer(circle: circle)
                circleRenderer.strokeColor = UIColor.black
                circleRenderer.fillColor = UIColor.green.withAlphaComponent(0.5)
                circleRenderer.lineWidth = 1.0
                return circleRenderer
            }
            return MKOverlayRenderer(overlay: overlay)
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.