大佬教程收集整理的这篇文章主要介绍了使用 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,请注明来意。