2017-07-21 12 views
0

半径を求めるプロンプトからユーザの入力を使って作成している円をどのようにレンダリングするのか分かりません。私は別のクラスからuserMapViewを継承しますが、そのクラスのオーバーレイレンダリングで何もしないので、今までrendererForOverlay関数を使用していませんでした。親クラスにその関数を追加する必要がありますか、間違って何かしていますか?地図上に円を描くことはできません

@IBAction func addGeoFencePushed(_ sender: Any) { 
    let alertController = UIAlertController(title: nil, message: "How large would you like the geofence to be?", preferredStyle: .alert) 
    let confirmAction = UIAlertAction(title: "Confirm", style: .default) { (_) in 
     if let field = alertController.textFields?[0] { 
      // store your data 
      ALGlobal.sharedInstance.globalDefaults.set(field.text! as String, forKey: "geoFenceSize") 
      let rad = field.text! 
      self.drawGeoFence(radius: rad) 
     } else { 
      // user did not fill field 
     } 
    } 
    self.present(alertController, animated: true, completion: nil) 
} 

func drawGeoFence(radius: String){ 
    let bagList = ALGlobal.sharedInstance.bagLists 
    let bag = bagList?[0] 
    let center = CLLocationCoordinate2D(
     latitude: CLLocationDegrees.init(bag!.latitude), 
     longitude: CLLocationDegrees.init(bag!.longitude)) 
    let circle = MKCircle(center: center, radius: Double(radius)!) 

    userMapView.add(circle) 
} 

func mapView(mapView: MKMapView,rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer { 

    let circleRenderer = MKCircleRenderer(overlay: overlay) 
    circleRenderer.fillColor = UIColor.blue.withAlphaComponent(0.1) 
    circleRenderer.strokeColor = UIColor.blue 
    circleRenderer.lineWidth = 1 
    return circleRenderer 
} 

答えて

1

レンダラー関数は、署名が間違っているため呼び出されていません。スウィフト3では、正しい署名が

func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer { 

である。また、あなたはselfマップビューのデリゲートであることを確認する必要があります。

+0

私はあなたがこれについてコンパイラ警告を受け取っていないのに驚いています。 – matt

関連する問題