程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用 Pin大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用 Pin?

开发过程中遇到使用 Pin的问题如何解决?下面主要结合日常开发的经验,给出你关于使用 Pin的解决方法建议,希望对你解决使用 Pin有所启发或帮助;

我正在尝试在地图上显示地图图钉。在输入交易时,详细信息与位置坐标一起保存。在交易条目列表中,用户可以点击条目以获取更多详细信息,包括显示交易位置的小地图。

根据 Asperi 在 adding a MapMarker to MapKit in swiftUI 2 的建议,我似乎需要声明一个可识别的结构才能使用地图图钉。

在 DetailVIEw 中,纬度和经度在传输到 MapVIEw 之前被复制到坐标参数中。

struct DetailVIEw: VIEw {
       
    var coordinate: CLLOCATIOnCoordinate2D {
          CLLOCATIOnCoordinate2D(
          latitude: item.entryLat,longitude: item.entryLong)
     }
        
        var body: some VIEw {
            
            vstack {
                MapVIEw(coordinate: coordinatE)
                    .ignoresSafeArea(edges: .all)
                    .frame(height: 400)
                    .padding(.vertical,10)
            }
       }
  }
@H_301_8@
@H_138_2@mapVIEw 是我遇到问题的地方。我不确定如何传入我的区域坐标和标记(xxxxx)。将`坐标复制到@State 区域和标记会产生错误“传递给不带参数的调用的参数”。

struct Marker: IDentifiable {
 let ID = UUID()
 var LOCATIOn: MapMarker
}


struct MapVIEw: VIEw {
    
    var coordinate: CLLOCATIOnCoordinate2D
    
    @State private var region = MKCoordinateRegion(center:    CLLOCATIOnCoordinate2D(xxxxxxX),span: MKCoordinateSpan(latitudeDelta: 0.5,longitudeDelta: 0.5))
    
    let markers = [Marker(LOCATIOn: MapMarker(coordinate: CLLOCATIOnCoordinate2D(xxxxxxX),Tint: .red))]
    
    var body: some VIEw {
        
            Map(coordinateRegion: $region,showsUserLOCATIOn: true,AnnotationItems: markers) { marker in
                marker.LOCATIOn
            }.edgesIgnoringSafeArea(.all)
    }
}
@H_301_8@

解决方法

听起来对于您的应用程序来说,将区域声明为常量是可行的。代码如下所示:

 winners = self.__run_election(candidates,preferences)
                if log_on:
                    print('Winners',winners)

如果您仍想将其用作@State 变量,则可以使用自定义 struct Marker: Identifiable { let id = UUID() var LOCATIOn: MapMarker } struct MapView: View { var coordinate: CLLOCATIOnCoordinate2D var body: some View { Map(coordinateRegion: .constant(MKCoordinateRegion(center: coordinate,span: MKCoordinateSpan(latitudeDelta: 0.5,longitudeDelta: 0.5))),showsUserLOCATIOn: true,AnnotationItems: [Marker(LOCATIOn: MapMarker(coordinate: coordinatE))]) { marker in marker.LOCATIOn }.edgesIgnoringSafeArea(.all) } } 来设置值:

init

最后,我定义了内联标记数组,但您可以将其拆分为计算属性:

struct MapView: View {
    var coordinate: CLLOCATIOnCoordinate2D
    
    @State private var region : MKCoordinateRegion
    
    init(coordinate : CLLOCATIOnCoordinate2D) {
        self.coordinate = coordinate
        _region = State(initialValue: MKCoordinateRegion(center: coordinate,longitudeDelta: 0.5)))
    }
    
    var body: some View {
        Map(coordinateRegion: $region,AnnotationItems: [Marker(LOCATIOn: MapMarker(coordinate: coordinatE))]) { marker in
                marker.LOCATIOn
        }
        .edgesIgnoringSafeArea(.all)
    }
}

大佬总结

以上是大佬教程为你收集整理的使用 Pin全部内容,希望文章能够帮你解决使用 Pin所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:使用