SwiftUI Mapkit:如何选择 Mapkit 项目和自定义标记

问题描述 投票:0回答:1

我有一张地图,上面有 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”吗?)?

非常感谢!

我搜索了很多,但找不到任何关于此的文章。

swiftui tags mapkit selecteditem
1个回答
0
投票

尝试这种方法,使用

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
,以便可以进行选择。

© www.soinside.com 2019 - 2024. All rights reserved.