2017-05-09 81 views
1

我正在制作谷歌地图的演示我在谷歌地图上添加了标记,谷歌地图上约20-30标记,所以我想要做的时候用户输入的地方名称在该地方的文本字段将显示,它是标记和所有以前的标记,我添加在谷歌地图,应该也显示。所以当用户在UITextField中输入位置时,我添加了标记..我成功地完成了所有任务..但是当用户搜索另一个地方时,先前的搜索标记仍然保持那个位置..所以我不知道如何在用户搜索时删除前一个标记另一个地方..如何删除地图标记在谷歌地图swift 3

//这里是我的代码

//IBOutlet 
@IBOutlet var ViewMap: GMSMapView! 

func GetLocationFromAddress(address: String) { 
    let geocoder = CLGeocoder() 

    geocoder.geocodeAddressString(address, completionHandler: {(placemarks, error) -> Void in 
     if((error) != nil){ 
      print("Error", error ?? "") 
     } 
     if let placemark = placemarks?.first { 
      let coordinates:CLLocationCoordinate2D = placemark.location!.coordinate 

      print("lat", coordinates.latitude) 
      print("long", coordinates.longitude) 

      let position = CLLocationCoordinate2D(latitude: coordinates.latitude, longitude: coordinates.longitude) 
      let marker = GMSMarker(position: position) 
      marker.title = "Name Of Location" 
      marker.map = self.ViewMap 
      let camera = GMSCameraPosition.camera(withLatitude: coordinates.latitude, 
                longitude: coordinates.longitude, 
                zoom: self.zoomLevel) 
      self.ViewMap.camera = camera 
      self.ViewMap.animate(to: camera) 


     } 
    }) 
} 

//function call 
@IBAction func btnSearchAction(_ sender: Any) { 
    GetLocationFromAddress(address: self.txtSearch.text!) 
} 

您的帮助使我的一天good..thanks提前!!!!

回答

2

我觉得你应该保存最后一个搜索标记变量样型searchedMarker GMSMarker

和下一次当u任何位置重新进行搜索,你会得到行动btnSearchAction方法

@IBAction FUNC btnSearchAction(_发件人:任何) {

searchedMarker.map = nil 
GetLocationFromAddress(address: self.txtSearch.text!) 

}

并更新searchedMarker在创建GMSMarker的GetLocationFromAddress方法中。

+0

谢谢你的工作 – Foolish