2017-06-07 10 views
1

スライダが変更されると半径が増減するMKCircleを実装しようとしています。私が持っている問題は、円が再描画されたときに滑らかではないということです。私は他のいくつかの記事を読んだところで、MKCircleのサブクラスを作成しなければならないことを示しているようですが、サンプルコードを見るたびにSwift 3以降では厳しい時間が続きます。私にこれを行う方法を教えてください?ここでは、スライダが変更されたときのために私のコードは次のとおりです。MKCircleをスムーズにリサイズする方法

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

答えて

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) 
    } 

私はこれが役立つことを願っています。

+0

これは問題をまったく修正しません。サークルのサイズが変更されると、円滑ではありません。 – tyler

+0

私はそれが滑らかに見える。私はあなたが望むものを見つけることを願っています。 – Mariam

関連する問題