【问题标题】:IBAction to display latitude and longitude (swift)IBAction 显示纬度和经度(swift)
【发布时间】:2023-03-29 13:25:01
【问题描述】:

我有获取用户位置的代码。我希望用户能够按下按钮并在屏幕上查看他们的坐标。我该怎么做,因为我不能直接为按钮功能调用 myLat 或 MyLong,因为它是一个位置管理器功能。为什么这段代码不起作用?

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

    // get most recient coordinate
    let myCoor = locations[locations.count - 1]

    //get lat & long
    var myLat = myCoor.coordinate.latitude
    let myLong = myCoor.coordinate.longitude
    let myCoor2D = CLLocationCoordinate2D(latitude: myLat, longitude: myLong)

    //set span
    let myLatDelta = 0.05
    let myLongDelta = 0.05
    let mySpan = MKCoordinateSpan(latitudeDelta: myLatDelta, longitudeDelta: myLongDelta)

    let myRegion = MKCoordinateRegion(center: myCoor2D, span: mySpan)
    self.LocationManager.stopUpdatingLocation()
 }




@IBAction func coo(sender: AnyObject) {
     self.coolat.text! = String(myLat)
     self.coolong.text! = String(myLong)
}

【问题讨论】:

  • 您的代码是否正在编译?将 myLat 和 myLong 声明为全局变量。

标签: swift swift2 uilabel core-location ibaction


【解决方案1】:

由于您的 locationManager 变量 myLat 和 myLong 是该函数的本地,因此只需声明两个全局变量,(a) 由 locationManager 设置,(b) 然后由 IBAction 函数提取。

【讨论】:

  • 我已经在全局范围内设置了它们,但是当它们被调用为 IBAction 时,它们只显示为 0.0。我已将它们全局声明为 var myLat = CLLocationDegrees() 和 var myLong = CLLocationDegrees()。为什么它们显示为 0.0 而不是实际坐标?
  • 按照如何调试的顺序,(1) 设置两个断点,一个在您填充全局变量之后,一个在您的 IBAction 中,(2) 确保您正确填充内容 - 我我猜你是。如果是这样,那么您可能需要进行更好的类型转换——0.05 实际上可以显示为 0.0!看看这个线程如何格式化:[link]stackoverflow.com/questions/24051314/…
【解决方案2】:

在函数外部声明 myLatmyLong。您可以在 locationManager() 中更新这些值,这些值可以在标签中使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2016-05-08
    • 2015-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多