微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SwiftUI 2-将动态纬度和经度附加到Map元素并进行注释

如何解决SwiftUI 2-将动态纬度和经度附加到Map元素并进行注释

我在弄清楚如何从一个视图传递动态纬度/经度值并显示注释时遇到问题。我可以设置coordinateRegion,但是我不知道如何在不进行硬编码的情况下使注释显示在地图上。这是我目前拥有的内容,运行地图注释后仅在硬编码位置显示。我以为我可以使用设置可见区域的功能来更新该硬编码的经/纬度。因此,除非我实际查看的是与硬编码注释匹配的位置,否则现在地图不会显示图钉。

import SwiftUI
import SDWebImageSwiftUI
import MapKit
import CoreLocation
import Firebase

struct RestaurantDetail: View {

    var edges = UIApplication.shared.windows.first?.safeAreaInsets

var name: String
var image: String
var category: String
var location: GeoPoint
var latitude: Double
var longitude: Double
var address: String
var city: String
var state: String
var zip: String
var website: String
var phone: String
var delivery: Bool
var takeout: Bool
var sitdown: Bool
var outdoor: Bool



@State private var coordinateRegion = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 40.7,longitude: -73.9),span: MKCoordinateSpan(latitudeDelta: 0.001,longitudeDelta: 0.001))

private let places: [Spot] = [
    Spot(name: "Test",coordinate: CLLocationCoordinate2D(latitude: 28.552811,longitude: -81.503676))
]

var body: some View {
    
    ScrollView(.vertical,showsIndicators: false) {
        vstack {
            HStack {
                WebImage(url: URL(string: image))
                    .onSuccess { image,data,cacheType in
                    }
                    .resizable()
                    
                    .placeholder(Image(systemName: "photo")) // Placeholder Image
                    // Supports viewbuilder as well
                    .placeholder {
                        Rectangle().foregroundColor(.gray)
                    }
                    .indicator(.activity) // Activity Indicator
                    .transition(.fade(duration: 0.5))
                    .frame(height: 270,alignment: .top)
                    
                    .aspectRatio(contentMode: .fit)
                    .clipped()
            }.onAppear(perform: getCoordinates)
            vstack {
                HStack {
                    Text(name)
                        .font(.title2)
                        .fontWeight(.bold)
                    Spacer()
                }
                .padding(.top)
                HStack {
                    Text(address)
                        .font(.callout)
                        .foregroundColor(Color("Subtext"))
                    Spacer()
                }
                HStack {
                    Text(city)
                        .font(.callout)
                        .foregroundColor(Color("Subtext"))
                        + Text(",\(state)")
                        .font(.callout)
                        .foregroundColor(Color("Subtext"))
                        + Text(",\(zip)")
                        .font(.callout)
                        .foregroundColor(Color("Subtext"))
                    Spacer()
                }
          
                vstack {
                    Divider()
                        .padding(.top)
                    HStack {
                        if sitdown == true {
                            Image(systemName: "checkmark")
                                .font(.footnote)
                                .foregroundColor(Color.green)
                        } else {
                            Image(systemName: "xmark")
                                .font(.footnote)
                                .foregroundColor(Color.red)
                        }
                        Text("Dine-in")
                            .font(.footnote)
                            .padding(.trailing,8)
                        Text("· ")
                            .font(.footnote)
                        if takeout == true {
                            Image(systemName: "checkmark")
                                .font(.footnote)
                                .foregroundColor(Color.green)
                        } else {
                            Image(systemName: "xmark")
                                .font(.footnote)
                                .foregroundColor(Color.red)
                        }
                        Text("Takeout")
                            .font(.footnote)
                            .padding(.trailing,8)
                        Text("· ")
                            .font(.footnote)
                        if delivery == true {
                            Image(systemName: "checkmark")
                                .font(.footnote)
                                .foregroundColor(Color.green)
                        } else {
                            Image(systemName: "xmark")
                                .font(.footnote)
                                .foregroundColor(Color.red)
                        }
                        Text("Delivery")
                            .font(.footnote)
                        Spacer()
                    }.padding(.vertical,5)
                    
                    //                            HStack {
                    //                                if outdoor == true {
                    //                                    Image(systemName: "checkmark")
                    //                                    } else {
                    //                                        Image(systemName: "xmark")
                    //                                    }
                    //                                Text("Outdoor Seating")
                    //                                    .font(.footnote)
                    //                                    .padding(.top,8)
                    //                            }.padding(.bottom)
                    
                    Divider()
                        .padding(.bottom)
                }
               // MARK: Map View
                vstack {

                    
                        Map(coordinateRegion: $coordinateRegion,annotationItems: places,annotationContent: { place in MapPin(coordinate: place.coordinate)})

                }.frame(height: 230)
                
                vstack {
                    HStack {
                        Text(category)
                        Spacer()
                    }
                    HStack {
                        if website == "NA" {
                            Text("")
                                .frame(height: 0)
                        } else {
                            Image(systemName: "link.circle.fill")
                            Link(website,destination: URL(string: "http://\(website)")!)
                            //Text(website)
                        }
                        Spacer()
                    }.padding(.top)
                    HStack {
                        if phone == "0" {
                            Text("Phone number not available.")
                        } else {
                            Image(systemName: "phone.circle.fill")
                            Link(phone,destination: URL(string: "tel:\(phone)")!)
                        }
                        // Text(phone)
                        Spacer()
                    }.padding(.top)
                }
            }.padding(.horizontal)
            
            Spacer()
        }
        
        
        
    }.ignoresSafeArea(.all)
    
    
    
}

func getCoordinates() {
   // print(latitude)
    
    coordinateRegion.center.latitude = latitude
    coordinateRegion.center.longitude = longitude
    //Spot(name: name,coordinate: CLLocationCoordinate2D(latitude: latitude,longitude: longitude))
    Spot.init(name: name,longitude: longitude))
    print(Spot.init(name: name,longitude: longitude))

    
       // print (coordinateRegion.center)
    }
}


struct Spot: Identifiable {
    let id = UUID()
    var name: String
    var coordinate: CLLocationCoordinate2D
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?