Swift

Swift:地図の中心をずらしたとき、ピンを立てる。

写真にアノテーション(ピンとコメント)をつける実装はでき上がっていました。地図の中心をずらしたときも同じにすればいい・・・。

そのはずでしたが、意外なことに苦戦してしまいました。

まず、写真の座標(緯度・経度)が同じとき、アノテーションを座標で管理すればいいということはわかっていたので、中心座標も同じ考えを採用しました。同じ座標がポイントされたら、既存のものをremoveしてからピンを立てる。

それでどうだったかというと、Doubleで同じ座標データを使っているのに、結果が違うという問題がわかったので、座標を小数点10位までの値に揃えることにしました。値の変化の問題はこれで解決しました。

しかし、なぜか理由は不明なのですが、removeが適切に行われないことが判明しました。それで、すべてのピンをremoveして、再度ピンを設定するようにしました。

cm.zMap.removeAnnotations(cm.zMap.annotations)

これで地図の中心が動いてもそこにピンを立てられるようになりました。やりながら思ったのですが、都市名を入れると緯度経度に変換する機能を追加したいと思います。住所に関しては、ポストローンチでGoogle Mapsを利用することを検討したいと思います。

スクリーンショット 2015-09-28 21.44.32ついでながら、地図の中心をずらす処理はMapViewの中でやっています。よくわからないのですが、多分、delegateとして動作しているのではないか、と思います。

func mapView(mapView: MKMapView, regionDidChangeAnimated animated: Bool) {

Categories: Swift, 技術