【问题标题】:User Location is automatically called自动调用用户位置
【发布时间】:2016-08-03 15:24:06
【问题描述】:

在我的代码中,我需要初始化我的用户位置:它工作正常。

但每当我想更改我的位置(通过选择地址或扫过屏幕)时,我的应用都会将我带回到我的用户位置。

我在that post 上找到了一些答案。 但是,我不打电话给 didUpdateUserLocation() 。所以我不知道该怎么办。

我的应用程序是否经常调用 ViewDidLoad()

这是我的代码,用于初始化我的位置。

var usrLocation: CLLocationManager!

override func viewDidLoad() {
    super.viewDidLoad()
    if (CLLocationManager.locationServicesEnabled()) {
        usrLocation = CLLocationManager()
        usrLocation.delegate = self
        usrLocation.requestAlwaysAuthorization()
        usrLocation.requestLocation()
        usrLocation.startUpdatingLocation()
    }
    mapView.delegate = self
}

另外,我不能只删除我的usrLocation.requestLocation() 函数,我需要在应用启动时以我的用户为中心。我想在别处调用它,但我不知道在哪里?

【问题讨论】:

  • 不要同时调用requestLocation()startUpdatingLocation()。如果您只想获取用户的当前位置一次,请致电requestLocation(),如果您想持续更新位置,请致电startUpdatingLocation()
  • 哦,原来如此。非常感谢。你应该把它放在一个真实的答案中:)

标签: ios swift mapkit userlocation


【解决方案1】:

你已经实现了
usrLocation.startUpdatingLocation()

这是不断更新位置,所以一旦你指向另一个位置,它就会更新用户位置。

删除此行代码将起作用。

【讨论】:

  • 我知道,我在 20 分钟前发布了 :) 谢谢
  • 当然,我没有检查过,但是你找到了解决方案太好了 :)
【解决方案2】:

所以,正如 dan 所说,问题是我不应该打电话给 requestLocation()startUpdatingLocation().

所以现在我的代码就是这样,而且运行良好:

var usrLocation: CLLocationManager!

override func viewDidLoad() {
    super.viewDidLoad()
    if (CLLocationManager.locationServicesEnabled()) {
        usrLocation = CLLocationManager()
        usrLocation.delegate = self
        usrLocation.requestAlwaysAuthorization()
        usrLocation.requestLocation()
    }
    mapView.delegate = self
}

【讨论】:

    猜你喜欢
    • 2013-01-14
    • 2016-10-14
    • 2016-12-24
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    相关资源
    最近更新 更多