Google Map SDK for iOS (addSubviewを使う)
今回やったところ
公式のドキュメントやQiitaにある記事を見ても下のコードのようにUIViewそのものをそっくり置き換え(?)ていたが、Mapと同一のUIViewにStoryboard上でボタンを配置したい。
view = mapView
とりあえず作成したプログラムとストーリーボード。
let BoundSize: CGSize = UIScreen.main.bounds.size let camera = GMSCameraPosition.camera(withLatitude: 35.681167, longitude: 139.767052, zoom: 14.0) let mapView = GMSMapView.map(withFrame: CGRect.init(x: 0, y: 0, width: BoundSize.width, height: BoundSize.height), camera: camera) mapView.center = CGPoint(x:self.view.frame.width/2,y:self.view.frame.height/2) view.addSubview(mapView) self.view.sendSubviewToBack(mapView)
AddDataViewControllerのシーンのバックにマップを表示させて、マップ以外はStoryboardで作った。
- BoundSizeで画面の大きさを取得
- GMSMapView.mapの引数withFrameにCGRectでマップを表示する領域を指定して(?)Viewを作成
- addSubviewでAddDataViewControllerのビューに追加
- 最全面に配置されて他の部品が隠れてしまうので、sendSubviewToBackで最背面に移動
未解決の問題
上記の方法でやる前にContainer Viewを使って、それにembedした(?)MapViewContrallerという別クラスで作ろうとした。(それが設計上適切であるかはわからないけど、公式ドキュメントがview = mapViewとしていたのもあって)
でもマップとその他部品は正しく表示されたけど、指定した緯度経度の位置が画面の一番左上にきてしまった。
色々試行錯誤したけど解決できなかったので、原因等がわかるかたは良かったらコメントしてほしい。。。