Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在SwiftUI/MapKit中添加单个地图标记_Ios_Swift_Macos_Swiftui_Mapkit - Fatal编程技术网

Ios 在SwiftUI/MapKit中添加单个地图标记

Ios 在SwiftUI/MapKit中添加单个地图标记,ios,swift,macos,swiftui,mapkit,Ios,Swift,Macos,Swiftui,Mapkit,我正在制作苹果官方网站提供的关于显示名称、地图和一些见解的描述的图片。我想使用MapKit中的MapPin或MapMarker将单个pin或标记添加到地图上。但是,我不知道RandomAccessCollection是什么意思,对于Map的参数annotationItems,它是必需的 我只想使用地图视图中的坐标在地图上创建一个地图标记。坐标的数据将从其他结构传输 import SwiftUI import MapKit struct MapView: View { var coord

我正在制作苹果官方网站提供的关于显示名称、地图和一些见解的描述的图片。我想使用MapKit中的
MapPin
MapMarker
将单个pin或标记添加到地图上。但是,我不知道
RandomAccessCollection
是什么意思,对于
Map
的参数
annotationItems
,它是必需的

我只想使用
地图视图中的
坐标
在地图上创建一个地图标记。
坐标
的数据将从其他结构传输

import SwiftUI
import MapKit

struct MapView: View {
    var coordinate: CLLocationCoordinate2D

    @AppStorage("MapView.zoom")
    private var zoom: Zoom = .medium

    enum Zoom: String, CaseIterable, Identifiable {
        case near = "Near"
        case medium = "Medium"
        case far = "Far"

        var id: Zoom {
            return self
        }
    }

    var delta: CLLocationDegrees {
        switch zoom {
        case .near: return 0.02
        case .medium: return 0.2
        case .far: return 2
        }
    }

    var body: some View {
        Map(coordinateRegion: .constant(region), annotationItems: _) { _ in
            MapMarker(coordinate: coordinate)
        }
    }

    var region: MKCoordinateRegion {
        MKCoordinateRegion(
            center: coordinate,
            span: MKCoordinateSpan(latitudeDelta: delta, longitudeDelta: delta)
        )
    }
}

struct MapView_Previews: PreviewProvider {
    static var previews: some View {
        MapView(coordinate: CLLocationCoordinate2D(latitude: 34.011_286, longitude: -116.166_868))
    }
}
对于整个项目,
MapView
中的
坐标
数据将从
Landmark
传输(从加载.json的类
ModelData
传输)

我应该如何使用MapMarker,还是应该使用其他方法

import Foundation
import SwiftUI
import CoreLocation

struct Landmark: Hashable, Codable, Identifiable {
    var id: Int
    var name: String
    var park: String
    var state: String
    var description: String
    var isFavorite:Bool
    var isFeatured: Bool

    var category: Category
    enum Category: String, CaseIterable, Codable {
        case lakes = "Lakes"
        case rivers = "Rivers"
        case mountains = "Mountains"
    }
    
    private var imageName: String
    var image: Image {
        Image(imageName)
    }
    var featureImage: Image? {
        isFeatured ? Image(imageName + "_feature") : nil
    }

    private var coordinates: Coordinates
    var locationCoordinate: CLLocationCoordinate2D {
        CLLocationCoordinate2D(
            latitude: coordinates.latitude,
            longitude: coordinates.longitude)
    }

    struct Coordinates: Hashable, Codable {
        var latitude: Double
        var longitude: Double
    }
}