Swift MKMapView Polygon Overlay glitching Swift MKMapView Polygon Overlay glitching ios ios

Swift MKMapView Polygon Overlay glitching


It looks like you're using an MKPolygon even though you're only drawing a single point, with the same latitude and longitude. I think it would be better to use an MKCircle for a single point.

func drawLocation(_ loc: CLLocation)    {        let center = CLLocationCoordinate2D(latitude: loc.coordinate.latitude, longitude: loc.coordinate.longitude)        let circle = MKCircle(center: center, radius: 4)        DispatchQueue.main.async(execute: {            self.mapView.add(circle)        })    }func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer    {        if overlay is MKCircle        {            let circleView = MKCircleRenderer(circle: overlay)            circleView.lineWidth = 4            circleView.strokeColor = UIColor(red: 30/255.0, green: 12/255.0, blue: 242/255.0, alpha: 0.4)            return circleView        }        return nil    }

As you say, the zooming feature in and out is what could cause this glitch because the points when you zoom in may look more like a polygon, and when you zoom out the renderer still has polygon artefacts but is now rendering only a single coordinate.

Usually it's better to use a polygon to render points which are spaced further apart, this helps the renderer since the map renders on a tile-by-tile basis which makes it easy to distinguish points in the polygon. For multiple points which are very close together then we can consider grouping them to use a larger radius MKCircle. You can also consider setting isZoomEnabled to false for the MKMapView and setting a fixed MKCoordinateRegion at the desired zoom level to avoid these rendering artefacts.


To remove this bug, only solution is switch to Google Maps because that bug is linked with iOS 10+. You can report this bug to Apple Bug Reporting:https://developer.apple.com/bug-reporting/