Gradient along MKPolyLineView ( MKPolylineRenderer )

I’d like to apply a gradient on a polyline view depending on some conditions like speed.
I was able to subclass MKPolyLineRenderer to draw with custom stroke and fill, but only with the same color along the path.

I saw other similar questions like : Draw segments from a circle or donut or On OSX, how do I gradient fill a path stroke? , but it is not exactly what I’d want.
If I understand correctly, a path like below couldn’t be filled with these methods. At least not treated as a whole.

  • How to store an MKPolyline attribute as transformable in IOS coredata with swift?
  • MKPolyline / MKPolylineRenderer changing color without remove it
  • UnsafeMutablePointer in swift as replacement for properly sized C Array in Obj-C
  • Polyline not drawing from user location (blue dot)
  • Draw polyline using Swift
  • Plotting a users route taken on a map using MKPolyline
  • enter image description here

    A very similar question is Gradient Polyline with MapKit ios. But it adds an overlay for each segment between the points, which I think isn’t too efficient.

    Is this the only possible way ? ( I’d need to draw hundreds or maybe thousands of these segments … ) How can this be achieved easily ?


    Solutions Collect From Internet About “Gradient along MKPolyLineView ( MKPolylineRenderer )”

    So the original answer is here

    you can find the demo here

    and some improvement tips provided by @Templar is:

    • prepare the path directly in the init.
    • check also for CGRectContains, not only for intersection.

    thanks man! :p