2

I use the following delegate method to draw route on Map. It works fine most of the time except in one route that has large coordinates array. Sometimes it can cast the MKOverlay to MKPolyline and sometimes it cannot for the same route. Any idea why this is happening?

public override MKOverlayView GetViewForOverlay (MKMapView mapView, IMKOverlay overlay)
            {
                if (overlay is MKPolyline) {
                    MKPolyline polyline = overlay as MKPolyline;
                    MKPolylineView polylineView = new MKPolylineView (polyline);
                    polylineView.StrokeColor = UIColor.Blue;
                    polylineView.LineWidth = 5.0f;
                    return polylineView;
                }
                return null;
            }
Sarah
  • 1,595
  • 3
  • 25
  • 34

2 Answers2

0

This code for Objective C and Translate it. Draw route polyLine on map as below code,

func mapView(mapView: MKMapView!, rendererForOverlay overlay: MKOverlay!) -> MKOverlayRenderer! {
        if overlay is MKPolyline {
            var polylineRenderer = MKPolylineRenderer(overlay: overlay)
            polylineRenderer.strokeColor = UIColor.blueColor()
            polylineRenderer.lineWidth = 5
            return polylineRenderer
        }

        return nil
    }
Kirit Modi
  • 23,155
  • 15
  • 89
  • 112
0
MKOverlayRenderer GetOverlayRenderer(MKMapView mapView, IMKOverlay overlayWrapper)
    {
        var type = overlayWrapper.GetType();
        var overlay = overlayWrapper as IMKOverlay;
        if (overlay is MKPolyline || type == typeof(MKPolyline))
        {
            if (polylineRenderer == null)
            {

                polylineRenderer = new MKPolylineRenderer(overlay as MKPolyline);
                polylineRenderer.FillColor = UIColor.Blue;
                polylineRenderer.StrokeColor = UIColor.Red;
                polylineRenderer.LineWidth = 3;
                polylineRenderer.Alpha = 0.4f;
            }
            return polylineRenderer;

        }
}

I have the same problem, but this code works on the Simulator but not on a device.