2017-10-14 16 views
1

マップの注釈に緯度と経度を追加しようとしています。 私のデータは、私がNSNumberをDouble(CLLocationDegrees)に変換する

var coordinate = CLLocationCoordinate2D() 
let latNum = shopCoordinate["lat"] as! NSNumber 
let lngNum = shopCoordinate["lng"] as! NSNumber 
let lat = latNum as? Double 
let lng = lngNum as? Double 
coordinate.latitude = lat! 
coordinate.longitude = lng! 

を追加するために、辞書で辞書最初

["lat": 25.0437396, "lng": 121.5308224] 

と使用価値に変換しJSONタイプ

"{\"lat\": 25.0437396, \"lng\": 121.5308224}" 

である。しかしDouble型の値は次のようになりますこれは地図上に表示されません

25.043739599999999, 121.53082240000001 

CLLocationDegreesはdouble型を受け入れるので、代わりに他の型にキャストできません。それは私のクレイジーを運転する。誰かが私に助言を与えることができれば、本当に本当に感謝しています。

答えて

0

なぜそれをDoubleに直接変換してみませんか?

if let latNum = shopCoordinate["lat"] as? Double, let lngNum = shopCoordinate["lng"] as? Double { 
    let coordinate = CLLocationCoordinate2D(latitude: latNum, longitude: lngNum) 
} 
+0

ありがとうございました。あなたのコードは私のものよりもエレガントです。 – Satty

0

あなたはほぼあります。あなたはそうのように、DoubleなくNSNumberにデータをキャストする必要があります。

var coordinate = CLLocationCoordinate2D() 
let lat = shopCoordinate["lat"] as! Double 
let lng = shopCoordinate["lng"] as! Double 
coordinate.latitude = lat 
coordinate.longitude = lng 
+0

キャスト後に精度が失われることを心配していました。それを指摘してくれてありがとう。 – Satty

+0

@Satty 25.043739599999999これは25.0437396と同じです –

関連する問題