2017-06-06 14 views
1

私の緯度と経度をURLパラメータに渡そうとしていますが、Nilを返していますが、デリゲート内で印刷すると経度と緯度が返され、問題を見つけることができないようですさまざまな方法と何が、これは私はこれが私のデリゲート経度と緯度をCLLocationManagerからURLに渡しますか?

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) 

} 

と彼女は私の緯度と経度

var lat: Double! var long: Double!

を保存する変数です

を動作するようです

スウィフト3

:電子のようなものを試してみて、私は私のURLパラメータで使用していますが、彼らはnilを返すと

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

+0

?あなたはどこでその価値観を得ようとしていますか?デリゲートをCLLocationManagerインスタンスに割り当てましたか? –

+0

私のクラスの後に、私はビューにその代理人を割り当てました – SCS

答えて

1

あなたに

ありがとうなぜ私は理解していない変数に渡します
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.... 
} 
+0

私はそれを試みたが、何らかの理由で値が代理人から出ていない、私はデリゲートの外にlat – SCS

+0

更新された回答を試してください –

+0

、本当にありがとう – SCS

0

私はジョセフ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" 

だから正しいとシンプルなコードは次のとおりです。

スウィフト正確に宣言する `` long` lat`and 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. 
    } 
関連する問題