将经度和纬度从 CLLocationManager 传递到 URL?

Posted

技术标签:

【中文标题】将经度和纬度从 CLLocationManager 传递到 URL?【英文标题】:Pass longitude and latitude from CLLocationManager to URL? 【发布时间】:2017-06-06 23:56:40 【问题描述】:

我试图将我的纬度和经度传递给我的 url 参数,但返回 Nil,但是当我在委托中打印时,它返回经度和纬度,我似乎找不到问题,我试过了许多不同的方法,似乎没有任何工作

这是我存储纬度和经度的变量

var lat: Double! var long: Double!

这是我的代表

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

    currentLocation = manager.location!.coordinate

    let locValue:CLLocationCoordinate2D = currentLocation!

    self.long = locValue.longitude
    self.lat = locValue.latitude

    print(lat)
    print(long)


在这里将它们传递给我在 URL 参数中使用的变量,但它们返回 nil,我不明白为什么

let userLat = String(describing: lat)
let userLong = String(describing: long)

谢谢

【问题讨论】:

你到底在哪里声明latlong?你在哪里试图得到他们的价值观?您是否将委托分配给 CLLocationManager 实例? 在我的课之后,我确实在视图上分配了它的委托 【参考方案1】:

尝试类似:

斯威夫特 3

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

    if let last = locations.last 
        sendLocation(last.coordinate)
    



func sendLocation(_ coordinate: CLLocationCoordinate2D) 
    let userLat = NSString(format: "%f", coordinate.latitude) as String
    let userLong = NSString(format: "%f", coordinate.longitude) as String

    // Run API Call....

【讨论】:

我试过了,但是没有用,由于某种原因,值没有从委托中出来,如果我在委托之外打印 lat,它会返回 nil 搞定了,非常感谢您的帮助,非常感谢您的帮助【参考方案2】:

我认为 Joseph K 的回答不正确。它对纬度和经度的值进行四舍五入。类似于下面的代码。

let coordinate = CLLocationCoordinate2D(latitude: CLLocationDegrees(exactly: 35.6535425)!, longitude: CLLocationDegrees(exactly: 139.7047917)!)

let latitude = coordinate.latitude // 35.6535425
let longitude = coordinate.longitude // 139.7047917

let latitudeString = NSString(format: "%f", latitude) as String // "35.653543"
let longitudeString = NSString(format: "%f", longitude) as String // "139.704792"

所以正确和简单的代码是:

斯威夫特 3

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

        guard let coordinate = locations.last?.coordinate else  return 

        let latitude = "\(coordinate.latitude)"
        let longitude = "\(coordinate.longitude)"

        // Do whatever you want to make a URL.
    

【讨论】:

以上是关于将经度和纬度从 CLLocationManager 传递到 URL?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CLLocationManager-Swift 获取当前的经度和纬度

ios CLLocationManager didUpdateToLocation 经纬度迁移

在两个纬度和经度之间绘制折线

CLLocationCoordinate2D 纬度和经度始终为零

Swift:使用纬度/经度时坐标不准确

如何从经度和纬度中筛选国家?