我有以下代码:

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)

并分别比较它们。

09-27 12:23