2016-12-22 106 views
0

點擊時如何啓用GMSMarker?我想當一個標記點​​擊一個警報控制器顯示並詢問用戶是否想要保存或刪除點擊標記。那麼當按下「刪除」按鈕時,我怎麼才能得到點擊標記?以及如果按下'保存'後用戶何時訪問地圖,我該如何保存它。我有這個基本結構到目前爲止,但不知道如何實現功能:點擊時刪除GMSMarker

func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool { 

    print("didtapmarker") 
    let alert = UIAlertController(title: "Add this place to wishlist?", 
            message: "Would you like to add this to your list?", 
            preferredStyle: .alert) 

    let saveAction = UIAlertAction(title: "Save", 
            style: .default) 
    let cancelAction = UIAlertAction(title: "Remove", 
            style: .default) 


    //alert.addAction(defaultAction) 
    alert.addAction(saveAction) 
    alert.addAction(cancelAction) 


    self.present(alert, animated: true, completion: nil) 
    return false 
} 

那麼,我會從哪裏去?任何建議,將不勝感激。

回答

0

要從地圖移除標記,設置mapnil

marker.map = nil 

你可以把上面的代碼中handler關閉,當你初始化UIAlertAction

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

要保存標記會稍微複雜一點。如果您一次只想保存一個標記,則可以使用UserDefaults

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

要在地圖上顯示的保存標記上viewDidLoad,首先檢索保存的經度和緯度:

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

,並使用值來構建一個新的GMSMarker

如果要在地圖上保存多個標記,則需要使用核心數據。這比UserDefaults有點棘手。我建議你先閱讀一些教程。然後,您可以閱讀我所做的類似項目的代碼 - LongLatMap

+0

完美。看起來我需要深入研究Core Data以及如何使用它,因爲我希望用戶能夠保存多個標記。感謝您指點我正確的方向。 –

0

只需將地圖設置爲零,標記就會消失。

marker.map = nil