2017-06-05 23 views
0

私はマップ上にユーザーの速度に応じてポリラインを描くアプリケーションを持っていますが、いくつか問題があります。MapKitレンダリングの問題

第1に、速度の変化が変化しているにも関わらず、大量の行が1色になることがあります。

第2に、ユーザーが地図を移動したりズームしたりすると、線全体が赤くなります。

最後に、私はレンダリングと関係があるように見えるこの奇妙なドットを取得しますか? http://imgur.com/a/o5AKf

プログラミングにはかなり新しいので、本当に明白かもしれません!

のMapView:

func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer { 
    if overlay is MKPolyline { 
     polylineRenderer = MKPolylineRenderer(overlay: overlay) 
     polylineRenderer.lineWidth = 5 

     if currentMPH >= 0 && currentMPH <= 9 { 
      polylineRenderer.strokeColor = UIColor(red: 1.00, green: 0.12, blue: 0.00, alpha: 1.0) 
     } 
     if currentMPH >= 10 && currentMPH <= 29 { 
      polylineRenderer.strokeColor = UIColor(red: 1.00, green: 0.67, blue: 0.00, alpha: 1.0) 
     } 
     if currentMPH >= 30 && currentMPH <= 49 { 
      polylineRenderer.strokeColor = UIColor(red: 0.03, green: 1.00, blue: 0.01, alpha: 1.0) 
     } 
     return polylineRenderer 
    } 
    return MKPolylineRenderer() 
} 

答えて

0

あなたのrendererFor MapKitデリゲートでそれを使用するとMKPolylineRenderer

class MyPolyline: MKPolylineRenderer { 
    override func applyStrokeProperties(to context: CGContext, 
atZoomScale zoomScale: MKZoomScale) { 
     super.applyStrokeProperties(to: context, atZoomScale: 
zoomScale) 
     if let ctx = UIGraphicsGetCurrentContext() { 
      ctx.setLineWidth(self.lineWidth) 
     } 
    } 
} 

のサブクラスを作成する必要があります。

func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer { 
     let renderer = MyPolyline(overlay: overlay) 
     renderer.strokeColor = UIColor.black 
     renderer.lineWidth = 3 
     return renderer 
} 
関連する問題