我有以下代码:
func mapView(mapView: GMSMapView, didTap marker: GMSMarker){
let lat: CLLocationDegrees = marker.position.latitude
let lng: CLLocationDegrees = marker.position.longitude
var formattedCoordinate = CLLocationCoordinate2D(latitude: lat,longitude: lng)
markersArray.remove(formattedCoordinate)
self.clean()
}
func mapView(mapView: GMSMapView, didBeginDragging marker: GMSMarker){
let lat: CLLocationDegrees = marker.position.latitude
let lng: CLLocationDegrees = marker.position.longitude
var formattedCoordinate = CLLocationCoordinate2D(latitude: lat,longitude: lng)
markersArray.remove(formattedCoordinate)
}
如您所见,我正在尝试从markersArray中“删除”“ formattedCoordinate”。我看到有一些选项,例如.filter和其他方法,它们可以删除特定索引处的元素,但是在这里,我想从数组中删除该特定坐标。我怎么做?
最佳答案
markers = markers.filter({ (coordinateToRemove) -> Bool in
return coordinateToRemove.latitude == formattedCoordinate.latitude && coordinateToRemove.longitude == formattedCoordinate.longitude
})
我有一个相同的问题,它通过四舍五入使用的纬度和经度值(因为它们在formattedCoordinate对象中可以相差十进制)可以解决。
回合(coordinateToRemove.latitude)
并分别比较它们。