前提・実現したいこと
マーカーをタップした時に、他のViewを表示させる方法。
SwiftUIを使ってGoogleMapの表示を行っています。
実現できていること
・グーグルマップ表示
・マーカー表示
・マーカーの情報セット
発生している問題・エラーメッセージ
マーカーをタップした時に、Viewを表示させる方法が実現できないです。
UIkitやストーリーボードの記事が多く、SwiftUIの記事が少なくて困っています。
該当のソースコード
Content.view
import SwiftUI import GoogleMaps struct ContentView: View { var body: some View { GoogleMapView() } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } }
GoogleMapView.swift
// // GoogleMapView.swift // StartProject // // Created by owner on 2020/11/13. // import SwiftUI import UIKit import GoogleMaps struct GoogleMapView: UIViewRepresentable{ let marker : GMSMarker = GMSMarker() @EnvironmentObject var model:Model /// Creates a `UIView` instance to be presented. func makeUIView(context: Self.Context) -> GMSMapView { #if DEBUG GMSServices.provideAPIKey("APIキー") #endif let camera = GMSCameraPosition.camera(withLatitude: 35.6895, longitude: 139.69171, zoom: 17.0) let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera) marker.map = mapView return mapView } /// Updates the presented `UIView` (and coordinator) to the latest /// configuration. func updateUIView(_ mapView: GMSMapView, context: Self.Context) { // func updateUIView(_ mapView: GMSMapView, context: Self.Context) { // Creates a marker in the center of the map. //マップクリア mapView.clear() var strLatitude = 35.6895 var strLongitude = 139.69171 var strTittle = "a" for _ in 1...10 { let marker = GMSMarker() marker.position = CLLocationCoordinate2D(latitude: strLatitude, longitude: strLongitude) marker.title = strTittle marker.icon = UIImage(named: "flag01") marker.map = mapView strTittle += "a" strLatitude += 0.0000300 strLongitude += 0.0003000 } } private func requestLoacion() { // ユーザにアプリ使用中のみ位置情報取得の許可を求めるダイアログを表示 locationManager.requestAlwaysAuthorization() } // // func mapView(_ mapView: GMSMapView, markerInfoWindow marker: GMSMarker) -> UIView { // print("Showing marker infowindow") // let mInfoWindow = UIView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width - 48, height: 200)) // mInfoWindow.backgroundColor = UIColor.lightGray // mInfoWindow.layer.cornerRadius = 6 // // let lbl1 = UILabel(frame: CGRect.init(x: 8, y: 8, width: view.frame.size.width - 16, height: 15)) // lbl1.text = "Hi there!" // mInfoWindow.addSubview(lbl1) // // // return mInfoWindow // } }
試したこと
func mapViewメソッドを作成してみる。
イベントクラスを作成してGMSMapViewDelegateを設定する。
補足情報(FW/ツールのバージョンなど)
SwiftUI
Xcode
GoogleMapSDK
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー