gpt4 book ai didi

Swift 注释位置更新

转载 作者:行者123 更新时间:2023-11-28 10:16:10 26 4
gpt4 key购买 nike

import UIKit
import MapKit
import CoreLocation


class ServisimNeredeViewController: UIViewController, CLLocationManagerDelegate, MKMapViewDelegate {

var coordinates: [[Double]]!
var names:[String]!
var addresses:[String]!
var phones:[String]!

var locationManager :CLLocationManager = CLLocationManager()
let singleton = Global.sharedGlobal

let point = ServisimAnnotation(coordinate: CLLocationCoordinate2D(latitude: 41.052466 , longitude: 29.132123))

override func viewDidLoad() {
super.viewDidLoad()

coordinates = [[41.052466,29.108976]]// Latitude,Longitude
names = ["Servisiniz Burada"]
addresses = ["Furkan Kutlu"]
phones = ["5321458375"]
self.map.delegate = self

let coordinate = coordinates[0]

point.image = UIImage(named: "direksiyon")
point.name = names[0]
point.address = addresses[0]
point.phone = phones[0]
self.map.addAnnotation(point)

...
}

...
}

我在加载第一个屏幕时添加坐标的注释我在按下按钮时更新新设置的坐标。我想在按下按钮时即时更新位置。我该怎么做?

@IBAction func tttesttt(_ sender: Any) {
self.point.coordinate = CLLocationCoordinate2D(latitude: 42.192846, longitude: 29.263417)
}

执行上述操作时不会更新新位置。但是取消了协调,更新了新的,而不是我这样做了,但是没有再次发生

DispatchQueue.main.async { 
self.point.coordinate = CLLocationCoordinate2D(latitude: surucuKordinant.latitude!, longitude: surucuKordinant.longitude!)
}

最佳答案

可能的问题是您的 configuration 属性尚未针对键值观察 (KVO) 配置,这是 map 和/或注释 View 如何感知坐标变化的方式。

我会通过包含 dynamic 关键字来确保 coordinate 支持 KVO。有关详细信息,请参阅 Key-Value Observing将 Swift 与 Cocoa 和 Objective-C 结合使用:采用 Cocoa 设计模式。

显然,我们不必在 KVO 讨论中完成所有的观察者代码(因为 MapKit 正在做所有这些),但我们至少需要使我们的注释支持 KVO。例如,您的注释类可能如下所示:

class ServisimAnnotation: NSObject, MKAnnotation {
dynamic var coordinate: CLLocationCoordinate2D
...
}

未能将 coordinate 声明为 dynamic 将阻止发布键值通知,因此对注释的更改不会反射(reflect)在 map 上。

关于Swift 注释位置更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41335091/

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