iOS和Swift:CLLocationManagerDelegate不会更新第一个位置之外的位置坐标

时间:2015-10-30 02:33:30

标签: ios swift cllocationmanager

使用以下代码,我的currentLat和currentLong不会在第一个位置之外更新。位置永远不会超过1个项目,并且它总是完全相同。

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    let loc: CLLocation = locations[locations.count - 1]
    currentLat = loc.coordinate.latitude
    currentLong = loc.coordinate.longitude
}

我所做的所有搜索工作只展示了如果它完全无法工作,如何让它工作,但这只能工作,但只能工作一次。

我希望这种方式的工作方式是不断更新GPS坐标,并在更新位置时关闭此代表。该位置是否一直在更新?我认为这是由于" startUpdatingLocation()"的术语。并且有一个" stopUpdatingLocation()。"我试图错误地使用它吗?

就像我说的那样,它第一次有效,所以它加载并启动得很好,允许权限,info.plist有必要的条目。

1 个答案:

答案 0 :(得分:4)

如果要更新位置,则应在获得新位置后停止现有更新。您可以在stopUpdatingLocation()方法中使用didUpdateLocations:来执行此操作。

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {

    // This should match your CLLocationManager()
    locManager.stopUpdatingLocation()

    let loc: CLLocation = locations[locations.count - 1]
    currentLat = loc.coordinate.latitude
    currentLong = loc.coordinate.longitude
}

当您需要新位置时,请致电locManager.startUpdatingLocation()