世界の地図を含むUIImage
に地球上のいくつかの座標をプロットしようとしています。あなたはそれがかなりうまく働いていますが、座標とX Yからのマッピングが間違っている見たようワールドマップでuiimageviewのスウィフトプロット座標
:
は、以下の以下のUIImageViewの例を参照してください(私はマップを使用する必要はありません)!
Amsterdam
の座標は、(52.36666489,4.83333206)であり、Center
は(0,0)です。
私はこれを実現するためにしようとする、次のことをやったが、残念ながら、これはワークアウトされていません。
- を緯度が
-90
から90
の範囲にあるので、私は「正規化」に最初の座標を試してみました緯度は-180
〜180
です。これは、「正規化」バージョンをyiels実際の経度に実緯度及び180に90を加えることにより行われる:
let normalizedLat = location.coordinate.latitude + 90.0. let normalizedLng = location.coordinate.longitude + 180.0
-
Iを算出したこと後
normalizedLat
とnormalizedLng
は合わせて拡張すべきスケールファクタ:その後
let heightScaleFactor = mapImageView.frame.height/180.0 let widthScaleFActor = mapImageView.frame.width/360.0
そして3.私はスケーリングFACを持っていますTORSは、私は最終的により座標を計算することができます
let x = Double(widthScaleFActor * CGFloat(normalizedLng)) let y = Double(heightScaleFactor * CGFloat(normalizedLat)) dot.frame = CGRect(x: x, y: y, width: Double(dot.frame.width), height: Double(dot.frame.height))
しかし、いくつかの奇妙な理由のためにアムステルダムは、アムステルダムの場ではなく、センターは、センターの場ではありません。
私の計算が間違っていると確信しています。何か案は?
ああ、まあまあ、 'mapImageView.frame.height-y'がトリックをしました!地図はすでに今のところ良く見えます。しかしオフセットはまだ少し間違っています。見ていただけますか? http://imgur.com/a/EGvN8 –
赤道は画像の中心を通っていません。それは少し低いです。赤道オフセットを調整するために、別のファジーファクターを 'y'値に追加する必要があります。 – rmaddy
私は見る!どうもありがとうございました! –