0

タップしたときにGMSMarkerを削除するにはどうすればよいですか?マーカーがタップされて警告コントローラが表示され、ユーザーがタップしたマーカーを保存したり削除したりするかどうかを尋ねるときに、私は望みます。では、「削除」ボタンを押すと、タップされたマーカーはどのように削除されますか?また、「保存」が押された場合に、後でユーザーがマップにアクセスするときに保存する方法を教えてください。私はこの基本的な構造を持っていますが、機能を実装する方法はまだわかりません:タップ時にGMSMarkerを削除する

ここからどこに行きますか?任意の提案をいただければ幸いです。

答えて

0

マップからマーカーを削除するには、nilmapを設定します。あなたはUIAlertActionを初期化するとき

marker.map = nil 

をあなたはhandler閉鎖に上記のコードを置くことができます。

let cancelAction = UIAlertAction(title: "Remove", 
           style: .default) { 
    _ in marker.map = nil 
} 

へマーカーを保存するのは少し複雑です。一度に1つのマーカーのみを保存する場合は、UserDefaultsを使用できます。

let latitude = UserDefaults.standard.double(forKey: "lat") 
let longitude = UserDefaults.standard.double(forKey: "lon") 

また、新しいGMSMarkerを構築するために値を使用します。

if let latitude = marker.latitude?.doubleValue, let longitude = marker.longitude?.doubleValue { 
    UserDefaults.standard.set(latitude, forKey: "lat") 
    UserDefaults.standard.set(longitude, forKey: "lon") 
} 

は、最初に保存された緯度と経度を取得し、 viewDidLoadに地図上に保存されたマーカーを表示するには。

マップに複数のマーカーを保存する場合は、コアデータを使用する必要があります。これはUserDefaultsよりやや難解です。私は最初にいくつかのチュートリアルを読むことをお勧めします。そして、私が行った同様のプロジェクトのコードを読むことができます - LongLatMap

+0

パーフェクト。コアデータを掘り下げる必要があるようで、ユーザーが複数のマーカーを保存できるようにするためにはどのように使用するかのように見えます。正しい方向に私を指してくれてありがとう。 –

0

マップをnilに設定すると、マーカーは消えます。

marker.map = nil 
関連する問題