swift remove map overlays

ios, mkmapview, mkoverlay, swift

Solution

I've just done this:

let overlays = mapView.overlays
mapView.removeOverlays(overlays)

and it seems to work. Why do you define your overlays as a static variable?

EDIT:

This is what we've done to be able to use the global contains function to search a swift array and check if the element we're looking for exists inside the array or not. In this case we were searching for CLLocationCoordinate2D inside an array.

public func == (lhs: CLLocationCoordinate2D, rhs: CLLocationCoordinate2D) -> Bool {
return lhs.longitude == rhs.longitude && lhs.latitude == rhs.latitude
}

public func == (lhs: MKMapPoint, rhs: MKMapPoint) -> Bool {
    return lhs.x == rhs.x && lhs.y == rhs.y
}

extension CLLocationCoordinate2D: Equatable{

}

//This is needed to be Equatable to use the global contains function
extension MKMapPoint: Equatable {

}

Problem

I am trying to remove overlays from map. ``` func removeMapOverlay() { var removeOverlays : [AnyObject]! = self.mapView.overlays // Above line throws runtime exception self.mapView.removeOverlays(removeOverlays) } ``` `self.mapView.overlays` are type of `AnyObject` array. `var overlays: [AnyObject]! { get }`. So initially I wrote ``` var removeOverlays = self.mapView.overlays ``` It throws `EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)` exception at this line on runtime. So I did type casting for `[AnyObject]` I don't know it is correct or not but it still gives me same exception at runtime. Edit: What I did for Objective C code was: ``` - (void) removeMapOverlay { [self.mapView removeOverlays:[self.mapView overlays]]; NSMutableArray *tempArray = [NSMutableArray arrayWithArray:[self.mapView annotations]]; if ([tempArray containsObject:[MKUserLocation class]]) { [tempArray removeObject:[MKUserLocation class]]; } NSArray *annotationArray = [NSArray arrayWithArray:tempArray]; tempArray = nil; [self.mapView removeAnnotations:annotationArray]; } ``` I tried to create similar method in Swift. But it throws an exception like I explain above.

Original source