gpt4 book ai didi

swift - MapKit addAnnotation 与 addAnnotations

转载 作者:行者123 更新时间:2023-11-28 13:25:04 25 4
gpt4 key购买 nike

我正在构建一个应用程序,我将在其中向 map 添加多个注释。作为第一个测试,我尝试了

let anotacao = MKPointAnnotation()
anotacao.coordinate.latitude = -23.623558
anotacao.coordinate.longitude = -46.581787
anotacao.title = "Annotation 1 Title"
anotacao.subtitle = "Annotation 1 Subtitle"
self.mapa.addAnnotation(anotacao)

anotacao.coordinate.latitude = -23.623658
anotacao.coordinate.longitude = -46.582787
anotacao.title = "Annotation 2 Title"
anotacao.subtitle = "Annotation 2 Subtitle"
self.mapa.addAnnotation(anotacao)

anotacao.coordinate.latitude = -23.623258
anotacao.coordinate.longitude = -46.591787
anotacao.title = "Annotation 3 Title"
anotacao.subtitle = "Annotation 3 Subtitle"
self.mapa.addAnnotation(anotacao)

我的预期结果是在 map 上看到 3 个注释,但我只有最后一个。我还尝试将这些代码行添加到

Timer.scheduledTimer(withTimeInterval: 8, repeats: true) { (timer) in
if index == 1 {
anotacao.coordinate.latitude = -23.623558
anotacao.coordinate.longitude = -46.581787
anotacao.title = "Annotation 1 Title"
anotacao.subtitle = "Annotation 1 Subtitle"
self.mapa.addAnnotation(anotacao)
index += 1
} else if index == 2 {
anotacao.coordinate.latitude = -23.623658
anotacao.coordinate.longitude = -46.582787
anotacao.title = "Annotation 2 Title"
anotacao.subtitle = "Annotation 2 Subtitle"
self.mapa.addAnnotation(anotacao)
index += 1
} else if index == 3 {
anotacao.coordinate.latitude = -23.623258
anotacao.coordinate.longitude = -46.591787
anotacao.title = "Annotation 3 Title"
anotacao.subtitle = "Annotation 3 Subtitle"
self.mapa.addAnnotation(anotacao)
}

即使在实际项目中不“可用”,上面的代码也会在 map 上显示 3 个注释。

通过搜索 Stackoverflow,我发现了另一种方法,即使用 addAnnotations,这正是我所需要的MapKit in Swift, Part 3 - MKPointAnnotation, addAnnotations我的最终代码看起来与该线程中建议的完全一样。

由于我是 Swift 编程的新手,所以我在这篇文章中的主要观点是尝试理解为什么第一个代码不起作用。 addAnnotation 缺少什么?

我正在使用 Xcode 11.2、Swift4、IOS13 和 macOS Catalina

最佳答案

您缺少的一点是 MKPointAnnotation 是一个引用类型(一个类),并且 map 存储了对您创建的类的实例的引用。因此,每次您尝试添加新注释时,您实际上是在更新现有注释的属性,而不是创建和添加新注释。这就是为什么它始终是最后一组可见的值。

要使您的第一个示例正常工作,您需要为三个注释中的每一个创建一个新的 MKMapAnnotation。

(我真的很惊讶基于计时器的那个能起作用,因为你似乎仍然在更新同一个对象。我会玩那个……)

关于swift - MapKit addAnnotation 与 addAnnotations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58513619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com