如何平滑地调整MKCircle的大小

时间:2017-06-07 23:04:26

标签: swift mkcircle

我正在尝试实现一个MKCircle,当滑块改变时,它会增加或减少半径。我的问题是,当重绘圆圈时,它根本不光滑。我已经阅读了一些其他帖子,他们似乎表明你必须创建一个MKCircle的子类,并以某种方式在那里做,但每当我看看示例代码我有一个艰难的时间跟随,因为它通常不在Swift 3。可能有人告诉我该怎么做?这是我更改滑块时的代码:

func sliderValueChanged(_ sender:UISlider!) {
    if (!map.selectedAnnotations.isEmpty) {
        for overlay in map.overlays {
            var temp : MKAnnotation = (map.selectedAnnotations.first)!
            if (overlay.coordinate.latitude == temp.coordinate.latitude && overlay.coordinate.longitude == temp.coordinate.longitude) {
                let newCirc : MKCircle = MKCircle(center: temp.coordinate, radius: CLLocationDistance(Float(sender.value*1000)))
                let region: MKCoordinateRegion = MKCoordinateRegionForMapRect(newCirc.boundingMapRect)
                let r: MKCoordinateRegion = map.region
                if (region.span.latitudeDelta > r.span.latitudeDelta || region.span.longitudeDelta > r.span.longitudeDelta){
                    map.setRegion(region, animated: true)
                }
                map.add(MKCircle(center: temp.coordinate, radius: CLLocationDistance(Float(sender.value*1000))))
                map.remove(overlay)
                break
            }
        }

    }
}

Image of what I have so far

1 个答案:

答案 0 :(得分:0)

我解决了它如下:

let currentLocPin = MKPointAnnotation()
var circle:MKCircle!

    func sliderValueDidChange(sender: UISlider) {

            map.remove(circle)

            circle = MKCircle(center: currentLocPin.coordinate, radius: CLLocationDistance(sender.value))
            map.add(circle)
    }

我希望这会有所帮助。