我有一张地图,上面有 Apples pre-定义它你的文字ems,比如“海滩”。我设置了一些自己的标记(将显示“我的海滩”)。
标记设置如下:
private let myMarkers: [(id: Int, name: String, coordinate: CLLocationCoordinate2D)] = [
(1, "Apple Developer Academy", CLLocationCoordinate2D(latitude: 40.836639, longitude: 14.306602)),
(2, "Restaurant", CLLocationCoordinate2D(latitude: 40.834890, longitude: 14.304400)),
(3, "Coffee Bar", CLLocationCoordinate2D(latitude: 40.836901, longitude: 14.302562)),
(4, "Beach", CLLocationCoordinate2D(latitude: 54.41621, longitude: 10.18242))
]
当我初始化地图时,我定义了“位置”和“选择”(如下)。
现在: 如果我只有 Apple-MapItems,我声明:
@State private var mySelectedAppleItem: MKMapItem?
我初始化:
Map(position: $position, selection: $mySelected**AppleItem**) {//
类型:MKMapItem
并且:
如果我只拥有 My-Map-“Items”(如果我没看错的话,不是 MKMapItems,而是“仅”标记的位置,我声明:
@State private var mySelectedTag: Int?
我初始化:
Map(position: $position, selection: $mySelected**Tag**) {//
类型:Int
所以: 当我选择Apple-Selection(选择:$mySelectedAppleItem)时,我可以轻松选择Apple-Items,但我自己的标记虽然标有标签,但不可选择。当我选择“我的选择”(选择:$mySelectedTag)时,我只能选择我的标记标记
这是我的问题:有没有办法可以同时选择两者?例如,通过 MapItem 的扩展(我可以将我的“items”声明为“Mapkit-Item”吗?)?
非常感谢!
我搜索了很多,但找不到任何关于此的文章。
尝试这种方法,使用
MKMapItem
和 myMarkers
的通用标识符类型。
例如, 给你的
MKMapItem(rawValue: "item-1")
也给你的 myMarkers 元组
[(identifier: "myMarker-1", ....
,而不是[(id: Int, ....
然后使用,
@State private var selectedTag: String? // both for MKMapItem and myMarkers
.tag(item.identifier)
这里有相同类型的
selectedTag
和 .tags
,以便可以进行选择。