Ios 在SwiftUI/MapKit中添加单个地图标记
我正在制作苹果官方网站提供的关于显示名称、地图和一些见解的描述的图片。我想使用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
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
}
}