Swiftui 使用扩展在可用变量中存储用户位置
我使用Swiftui 使用扩展在可用变量中存储用户位置,swiftui,mapkit,mapkitannotation,Swiftui,Mapkit,Mapkitannotation,我使用LocationManager创建了一个扩展,将用户位置存储在一个变量中,该变量将用于SwiftuiMap()和我的扩展。我注意到,当我初始化变量时,lat和long都是扩展所需要的,在我只需要userLat的地方使用 latitude:userLocation.init(userLat:,userLong:).self.userLat, struct ContentView_v2: View { // MARK: Get current location
LocationManager
创建了一个扩展,将用户位置存储在一个变量中,该变量将用于SwiftuiMap()
和我的扩展。我注意到,当我初始化变量时,lat和long都是扩展所需要的,在我只需要userLat的地方使用
latitude:userLocation.init(userLat:,userLong:).self.userLat,
struct ContentView_v2: View {
// MARK: Get current location
class userLocation {
let locationManager = LocationManager()
var userLat: Double
var userLong: Double
init(userLat: Double, userLong: Double){
self.userLat = locationManager.lastLocation?.coordinate.latitude ?? 0.0
self.userLong = locationManager.lastLocation?.coordinate.longitude ?? 0.0
}
}
@State private var region = MKCoordinateRegion(
center: CLLocationCoordinate2D(
latitude: userLocation.init(userLat: <#Double#>, userLong: <#Double#>).self.userLat,
longitude: userLocation.init(userLat: <#Double#>, userLong: <#Double#>).self.userLong
),
span: MKCoordinateSpan(
latitudeDelta: 0.01,
longitudeDelta: 0.01
)
)
var body: some View {
Map(
coordinateRegion: $region,
interactionModes: MapInteractionModes.all,
showsUserLocation: true,
userTrackingMode: $userTrackingMode,
annotationItems: yelpbusinessmapdata?.businesses ?? []
)
{ business in
MapAnnotation(
coordinate:
business.coordinates.coordinate2D,
anchorPoint: CGPoint(x: 0.5, y: 0.5)
){
VStack {
Image(systemName: "mappin")
.font(.system(size: 18, weight: .medium))
.foregroundColor(.red)
Text(business.name)
}
}
}
struct ContentView\u v2:View{
//标记:获取当前位置
类用户位置{
让locationManager=locationManager()
var userLat:Double
var userLong:Double
init(userLat:Double,userLong:Double){
self.userLat=locationManager.lastLocation?.coordinate.latitude±0.0
self.userLong=locationManager.lastLocation?.coordinate.longitude±0.0
}
}
@国有-私有var区域=MKCoordinateRegion(
中心:CLLocationCoordinated2D(
纬度:userLocation.init(userLat:,userLong:).self.userLat,
经度:userLocation.init(userLat:,userLong:).self.userLong
),
span:MKCoordinateSpan(
纬度德尔塔:0.01,
纵向德尔塔:0.01
)
)
var body:一些观点{
地图(
协调区域:区域,
交互模式:MapInteractionModes.all,
showsUserLocation:没错,
userTrackingMode:$userTrackingMode,
注释项:YelpBusiness MapData?.Businesss???[]
)
{中国的商业
地图注释(
协调:
商务协调,
主播点:CGPoint(x:0.5,y:0.5)
){
VStack{
图像(系统名称:“mappin”)
.font(.system(大小:18,重量:中等))
.foregroundColor(.red)
文本(business.name)
}
}
}
如果我正确理解了您的代码,那么您可能需要以下内容
class userLocation {
let locationManager = LocationManager()
var userLat: Double
var userLong: Double
init(){
self.userLat = locationManager.lastLocation?.coordinate.latitude ?? 0.0
self.userLong = locationManager.lastLocation?.coordinate.longitude ?? 0.0
}
}
@State private var region = MKCoordinateRegion(
center: CLLocationCoordinate2D(
latitude: userLocation().userLat,
longitude: userLocation().userLong
),