protected override void OnElementChanged(Xamarin.Forms.Platform.iOS.ElementChangedEventArgs <View> e)
        {
            base.OnElementChanged(e);

            if (e.OldElement == null)
            {
                mapView = Control as MKMapView;

                myMap = e.NewElement as MyMap;

                mapView.OverlayRenderer = (m, o) => {
                    if (lineRenderer == null)
                    {
                        lineRenderer             = new MKPolylineRenderer(o as MKPolyline);
                        lineRenderer.StrokeColor = UIColor.Red;
                        lineRenderer.FillColor   = UIColor.Red;
                    }
                    return(lineRenderer);
                };

                var point1 = new CLLocationCoordinate2D(37, -122);
                var point2 = new CLLocationCoordinate2D(37, -122.001);
                var point3 = new CLLocationCoordinate2D(37.001, -122.002);

                lineOverlay = MKPolyline.FromCoordinates(new CLLocationCoordinate2D[] { point1, point2, point3 });
                mapView.AddOverlay(lineOverlay);
            }
        }
Beispiel #2
0
        protected override void OnElementChanged(ElementChangedEventArgs <View> e)
        {
            base.OnElementChanged(e);

            if (e.OldElement != null)
            {
                _nativeMap = Control as MKMapView;
                if (_nativeMap != null)
                {
                    _nativeMap.RemoveOverlays(_nativeMap.Overlays);
                    _nativeMap.OverlayRenderer = null;
                    _polylineRenderer          = null;
                }
            }

            if (e.NewElement != null)
            {
                _formsMap  = (CustomMap)e.NewElement;
                _nativeMap = Control as MKMapView;

                _nativeMap.OverlayRenderer = GetOverlayRenderer;

                Update();
            }
        }
        MKOverlayRenderer GetOverlayRenderer(MKMapView mapView, IMKOverlay overlay)
        {
            #region for dotted routing between pins

            /*	var temp = new Foundation.NSNumber[2];
             *                  temp[0] = 2;
             *                  temp[1] = 10;
             *
             *                  polylineRenderer = new MKPolylineRenderer(overlay as MKPolyline);
             *                  polylineRenderer.FillColor = UIColor.Blue;
             *                  polylineRenderer.StrokeColor = UIColor.Red;
             *                  polylineRenderer.LineWidth = 3;
             *                  polylineRenderer.Alpha = 0.4f;
             *
             *                  polylineRenderer.LineDashPhase = 2;
             *                  polylineRenderer.LineDashPattern = temp;
             *                  polylineRenderer.LineJoin = CGLineJoin.Round;
             *
             *                  return polylineRenderer;*/
            #endregion
            #region for line drawing routing between pins
            if (polylineRenderer == null)
            {
                polylineRenderer             = new MKPolylineRenderer(overlay as MKPolyline);
                polylineRenderer.FillColor   = UIColor.Blue;
                polylineRenderer.StrokeColor = UIColor.FromRGB(40, 115, 221);
                polylineRenderer.LineWidth   = 3;
                polylineRenderer.Alpha       = 0.4f;
            }
            return(polylineRenderer);

            #endregion
        }
Beispiel #4
0
        protected override void OnElementChanged(ElementChangedEventArgs <View> e)
        {
            Control?.RemoveGestureRecognizer(_tapRecogniser);
            base.OnElementChanged(e);
            if (Control != null)
            {
                var nativeMap = Control as MKMapView;
                Control.AddGestureRecognizer(_tapRecogniser);

                nativeMap.DidChangeVisibleRegion += NativeMap_DidChangeVisibleRegion;
            }
            if (e.OldElement != null)
            {
                var nativeMap = Control as MKMapView;
                if (nativeMap != null)
                {
                    if (nativeMap.Overlays != null)
                    {
                        nativeMap.RemoveOverlays(nativeMap.Overlays);
                    }
                    nativeMap.OverlayRenderer = null;
                    _polygonRenderer          = null;
                    _polylineRenderer         = null;
                }
            }
            if (e.NewElement != null)
            {
                DrawElements();
            }
        }
Beispiel #5
0
        protected override void OnElementChanged(ElementChangedEventArgs <View> e)
        {
            base.OnElementChanged(e);

            if (e.OldElement != null)
            {
                var nativeMap = Control as MKMapView;
                if (nativeMap != null)
                {
                    nativeMap.RemoveOverlays(nativeMap.Overlays);
                    nativeMap.OverlayRenderer = null;
                    polylineRenderer          = null;
                }
            }

            if (e.NewElement != null)
            {
                var formsMap  = (CustomMap)e.NewElement;
                var nativeMap = Control as MKMapView;

                nativeMap.OverlayRenderer = GetOverlayRenderer;

                CLLocationCoordinate2D[] coords = new CLLocationCoordinate2D[formsMap.Route.Count];

                int index = 0;
                foreach (var position in formsMap.Route)
                {
                    coords[index] = new CLLocationCoordinate2D(position.Latitude, position.Longitude);
                    index++;
                }

                var routeOverlay = MKPolyline.FromCoordinates(coords);
                nativeMap.AddOverlay(routeOverlay);
            }
        }
Beispiel #6
0
		private void AddPolyline(MapPolyline polyline)
		{
			var coordinates = polyline
				.Path
				.Positions
				.Select(point => point.ToLocation())
				.ToArray();

			var strokeColor = (UIColor)polyline.StrokeColor;

			if (strokeColor == null)
			{
				throw new KeyNotFoundException("Stroke color key not found in resources.");
			}

			var overlay = MKPolyline.FromCoordinates(coordinates);
			var renderer = new MKPolylineRenderer(overlay)
			{
				StrokeColor = strokeColor,
				LineWidth = (nfloat)polyline.StrokeThickness
			};

			if (polyline.StrokeThickness != 0 && polyline.StrokeDashed)
			{
				renderer.LineDashPattern = new NSNumber[]
				{
					polyline.StrokeThickness,
					4
				};
			}

			_overlayRenderers.Add(overlay, renderer);
			_internalMapView.AddOverlay(overlay);
		}
Beispiel #7
0
        /*
         * Gets the new overlay renderer for the lines and circles
         */
        public MKOverlayRenderer GetOverlayRenderer(MKMapView mapView, IMKOverlay overlayWrapper)
        {
            var overlay = Runtime.GetNSObject(overlayWrapper.Handle) as IMKOverlay;

            if (overlay.GetType() == typeof(MKPolyline))
            {
                if (polylineRenderer == null && !Equals(overlayWrapper, null))
                {
                    polylineRenderer = new MKPolylineRenderer(overlay as MKPolyline)
                    {
                        StrokeColor = UIColor.Blue,
                        LineWidth   = (System.nfloat) 2.0,
                        Alpha       = 0.4f,
                    };
                }

                return(polylineRenderer);
            }
            else
            {
                if (circleRenderer == null && !Equals(overlayWrapper, null))
                {
                    circleRenderer = new MKCircleRenderer(overlay as MKCircle)
                    {
                        FillColor = UIColor.Black,
                        Alpha     = 0.4f,
                    };
                }
                return(circleRenderer);
            }
        }
Beispiel #8
0
            public override MKOverlayRenderer OverlayRenderer(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   = 5;
                        isLoaded = true;
                    }
                    return(polylineRenderer);
                }
                else if (overlay is MKCircle)
                {
                    if (circleRenderer == null)
                    {
                        circleRenderer           = new MKCircleRenderer(overlay as MKCircle);
                        circleRenderer.FillColor = UIColor.Red;
                        circleRenderer.Alpha     = 0.2f;
                        isLoaded = true;
                    }
                    return(circleRenderer);
                }
                return(base.OverlayRenderer(mapView, overlayWrapper));
            }
Beispiel #9
0
 MKOverlayRenderer GetOverlayRenderer(MKMapView mapView, IMKOverlay overlay)
 {
     if (!isCircle)
     {
         if (polylineRenderer == null)
         {
             polylineRenderer             = new MKPolylineRenderer(overlay as MKPolyline);
             polylineRenderer.FillColor   = UIColor.Blue;
             polylineRenderer.StrokeColor = UIColor.Red;
             polylineRenderer.LineWidth   = 3;
             polylineRenderer.Alpha       = 0.4f;
         }
         isLoaded = true;
         return(polylineRenderer);
     }
     if (isCircle)
     {
         if (circleRenderer == null)
         {
             circleRenderer           = new MKCircleRenderer(overlay as MKCircle);
             circleRenderer.FillColor = UIColor.Red;
             circleRenderer.Alpha     = 0.4f;
         }
         isLoaded = true;
         return(circleRenderer);
     }
     return(polylineRenderer);
 }
Beispiel #10
0
        public override MKOverlayRenderer OverlayRenderer(MKMapView mapView, IMKOverlay overlay)
        {
            MKPolylineRenderer polylineRenderer = new MKPolylineRenderer(overlay as MKPolyline);

            polylineRenderer.StrokeColor = UIColor.Blue;
            polylineRenderer.LineWidth   = 2f;
            return(polylineRenderer);
        }
Beispiel #11
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            try
            {
                if (_posiciones.Count >= 2)
                {
                    var primera = _posiciones[0];
                    var ultima  = _posiciones[_posiciones.Count - 1];

                    var Centrar = new CLLocationCoordinate2D(primera.Coordenada.Latitud, primera.Coordenada.Longitud);
                    var Altura  = new MKCoordinateSpan(.1, .1);
                    var Region  = new MKCoordinateRegion(Centrar, Altura);

                    Mapa.SetRegion(Region, true);

                    _posiciones.ForEach(x => Mapa.AddAnnotation(
                                            new MKPointAnnotation()
                    {
                        Title      = x.ViajeId.ToString(),
                        Coordinate = new CLLocationCoordinate2D()
                        {
                            Latitude  = x.Coordenada.Latitud,
                            Longitude = x.Coordenada.Longitud
                        }
                    }));

                    var origen        = new CLLocationCoordinate2D(primera.Coordenada.Latitud, primera.Coordenada.Longitud);
                    var destino       = new CLLocationCoordinate2D(ultima.Coordenada.Latitud, ultima.Coordenada.Longitud);
                    var Info          = new NSDictionary();
                    var OrigenDestino = new MKDirectionsRequest()
                    {
                        Source      = new MKMapItem(new MKPlacemark(origen, Info)),
                        Destination = new MKMapItem(new MKPlacemark(destino, Info))
                    };
                    var Direcciones = new MKDirections(OrigenDestino);
                    Direcciones.CalculateDirections((response, error) =>
                    {
                        var ruta  = response.Routes[0];
                        var Linea = new MKPolylineRenderer(ruta.Polyline)
                        {
                            LineWidth   = 5.0f,
                            StrokeColor = UIColor.Orange
                        };
                        Mapa.OverlayRenderer = (mapView, overlay) => Linea;
                        Mapa.AddOverlay(ruta.Polyline, MKOverlayLevel.AboveRoads);
                    });
                }
            }
            catch (Exception ex)
            {
                //Console.WriteLine(ex);
                MostrarMensaje("Error: ", ex.Message);
            }
        }
        public MKOverlayRenderer GetRenderer()
        {
            if (_renderer == null)
            {
                _renderer = new MKPolylineRenderer(this);
                Update();
            }

            return(_renderer);
        }
 //Override OverLayRenderer to draw Polyline from directions
 public override MKOverlayRenderer OverlayRenderer(MKMapView mapView, IMKOverlay overlay)
     {
         if (overlay is MKPolyline)
         {
             var route = (MKPolyline)overlay;
             var renderer = new MKPolylineRenderer(route) { StrokeColor = UIColor.Blue };
             return renderer;
         }
         return null;
     }
Beispiel #14
0
 //Override OverLayRenderer to draw Polyline returned from directions
 public override MKOverlayRenderer OverlayRenderer(MKMapView mapView, IMKOverlay overlay)
 {
     if (overlay is MKPolyline)
     {
         var route = (MKPolyline)overlay;
         var renderer = new MKPolylineRenderer(route) { StrokeColor = UIColor.Blue };
         return renderer;
     }
     return null;
 }
        public MKOverlayRenderer GetRenderer()
        {
            if (_renderer == null)
            {
                _renderer = new MKPolylineRenderer(this);
                Update();
            }

            return _renderer;
        }
Beispiel #16
0
 /// <summary>
 /// Clears the highlighted flight path
 /// </summary>
 private void clearFlightPath()
 {
     if (!(highlightedFlightPath.Item2 == null))
     {
         nativeMap.RemoveOverlay(highlightedFlightPath.Item2);
         this.polylineRenderer     = null;
         nativeMap.OverlayRenderer = this.GetOverlayRenderer;
     }
     highlightedFlightPath = new Tuple <CustomPin, MKPolyline>(null, null);
 }
Beispiel #17
0
 /// <summary>
 /// Return MKOverlay (Line of the Polyline) designed basing on the CustomMap instance properties.
 /// </summary>
 /// <param name="mapView">Instance of the MapView.</param>
 /// <param name="overlay">Interface of MKOverlay.</param>
 /// <returns></returns>
 private MKOverlayRenderer GetOverlayRenderer(MKMapView mapView, IMKOverlay overlay)
 {
     if (polylineRenderer == null)
     {
         polylineRenderer             = new MKPolylineRenderer(overlay as MKPolyline);
         polylineRenderer.FillColor   = customMap.PolylineColor.ToUIColor();
         polylineRenderer.StrokeColor = customMap.PolylineColor.ToUIColor();
         polylineRenderer.LineWidth   = (float)customMap.PolylineThickness;
     }
     return(polylineRenderer);
 }
Beispiel #18
0
 MKOverlayRenderer GetOverlayRenderer(MKMapView mapView, IMKOverlay overlay)
 {
     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;
 }
 MKOverlayRenderer GetOverlayRenderer(MKMapView mapView, IMKOverlay overlay)
 {
     if (polylineRenderer == null)
     {
         polylineRenderer             = new MKPolylineRenderer(overlay as MKPolyline);
         polylineRenderer.FillColor   = UIColor.Red;
         polylineRenderer.StrokeColor = UIColor.Blue;
         polylineRenderer.LineWidth   = 3;
         polylineRenderer.Alpha       = 0.4f;
     }
     return(polylineRenderer);
 }
Beispiel #20
0
        private MKPolylineRenderer GetPolylineRenderer(MKPolyline polyline, string strokeColor, float?strokeWidth)
        {
            MKPolylineRenderer renderer = new MKPolylineRenderer(polyline);

            if (strokeColor != null)
            {
                var color = Xamarin.Forms.Color.FromHex(strokeColor);
                renderer.StrokeColor = UIColor.FromRGBA((float)color.R, (float)color.G, (float)color.B, (float)color.A);
            }
            renderer.LineWidth = strokeWidth.HasValue ? strokeWidth.Value : 1.0f;
            return(renderer);
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            //SE CREA LA LISTA  Y MANDA LLAMAR EL METOOO DE CARGAR DATOS Y SE LO ASIGNA
            var Lista = CargarDatos();


            //EMPIEZA A CREAR LAS NUEVAS ANOTACIONES DE UNA FORMA DINAMICA
            Lista.ForEach(x => Mapa.AddAnnotation(new MKPointAnnotation()
            {
                Title      = x.Titulo,
                Coordinate = new CLLocationCoordinate2D()
                {
                    Latitude  = x.Latitud,
                    Longitude = x.Longitud
                }
            }));


            //DIRECCIONES
            var bajio  = new CLLocationCoordinate2D(21.152676, -101.711698);
            var laguna = new CLLocationCoordinate2D(25.510326, -103.453235);
            var Info   = new NSDictionary();


            var OrigenDestino = new MKDirectionsRequest()
            {
                Source      = new MKMapItem(new MKPlacemark(bajio, Info)),
                Destination = new MKMapItem(new MKPlacemark(laguna, Info)),
            };
            //SE CREA LA INSTANCIA PARA LAS DIRECCIONES
            var Direcciones = new MKDirections(OrigenDestino);

            //NOS AYUDARA A CARGAR LAS DIRECCIONES Y MARCARLO EN EL MAPA
            Direcciones.CalculateDirections((response, error) =>
            {
                if (error == null)
                {
                    var ruta  = response.Routes[0];
                    var Linea = new MKPolylineRenderer(ruta.Polyline)
                    {
                        LineWidth   = 5.0f,
                        StrokeColor = UIColor.Blue
                    };

                    //	SE CREA UN NUEVA CAPA
                    Mapa.OverlayRenderer = (res, err) => Linea;
                    // SE AGREGA LA NUEVA CAPA AL MAPA
                    Mapa.AddOverlay(ruta.Polyline, MKOverlayLevel.AboveRoads);
                }
            });
        }
        private MKOverlayRenderer GetOverlayRenderer(MKMapView mapView, IMKOverlay overlayWrapper)
        {
            var overlay          = Runtime.GetNSObject(overlayWrapper.Handle) as IMKOverlay;
            var polylineRenderer = new MKPolylineRenderer(overlay as MKPolyline)
            {
                FillColor   = UIColor.Blue,
                StrokeColor = UIColor.Blue,
                LineWidth   = 5,
                Alpha       = 1f
            };

            return(polylineRenderer);
        }
Beispiel #23
0
 public override MKOverlayRenderer OverlayRenderer(MKMapView mapView, IMKOverlay overlay)
 {
     if (overlay is MKPolyline)
     {
         var route    = (MKPolyline)overlay;
         var renderer = new MKPolylineRenderer(route)
         {
             StrokeColor = UIColor.Red, LineWidth = 3.0f
         };
         return(renderer);
     }
     return(null);
 }
Beispiel #24
0
        protected override void OnElementChanged(ElementChangedEventArgs <View> e)
        {
            base.OnElementChanged(e);

            if (e.OldElement != null)
            {
                var nativeMap = Control as MKMapView;
                if (nativeMap != null)
                {
                    // for route
                    nativeMap.RemoveOverlays(nativeMap.Overlays);
                    nativeMap.OverlayRenderer = null;
                    polylineRenderer          = null;

                    // for pin
                    nativeMap.RemoveAnnotations(nativeMap.Annotations);
                    nativeMap.GetViewForAnnotation           = null;
                    nativeMap.CalloutAccessoryControlTapped -= OnCalloutAccessoryControlTapped;
                    nativeMap.DidSelectAnnotationView       -= OnDidSelectAnnotationView;
                    nativeMap.DidDeselectAnnotationView     -= OnDidDeselectAnnotationView;
                }
            }

            if (e.NewElement != null)
            {
                var formsMap  = (CustomMap)e.NewElement;
                var nativeMap = Control as MKMapView;
                customPins = formsMap.CustomPins;

                // for route
                nativeMap.OverlayRenderer = GetOverlayRenderer;
                CLLocationCoordinate2D[] coords = new CLLocationCoordinate2D[formsMap.RouteCoordinates.Count];

                int index = 0;
                foreach (var position in formsMap.RouteCoordinates)
                {
                    coords[index] = new CLLocationCoordinate2D(position.Latitude, position.Longitude);
                    index++;
                }

                var routeOverlay = MKPolyline.FromCoordinates(coords);
                nativeMap.AddOverlay(routeOverlay);

                // for pin
                nativeMap.GetViewForAnnotation           = GetViewForAnnotation;
                nativeMap.CalloutAccessoryControlTapped += OnCalloutAccessoryControlTapped;
                nativeMap.DidSelectAnnotationView       += OnDidSelectAnnotationView;
                nativeMap.DidDeselectAnnotationView     += OnDidDeselectAnnotationView;
            }
        }
Beispiel #25
0
            public override MKOverlayRenderer OverlayRenderer(MKMapView mapView, IMKOverlay overlay)
            {
                if (overlay is MKPolyline)
                {
                    var polylineRenderer = new MKPolylineRenderer(overlay as MKPolyline)
                    {
                        StrokeColor = UIColor.Red,
                        LineWidth   = 2
                    };
                    return(polylineRenderer);
                }

                return(null);
            }
            //static string annotationId = "ConferenceAnnotation";
            public override MKOverlayRenderer OverlayRenderer(MKMapView mapView, IMKOverlay overlay)
            {
                if (overlay is MKPolyline)
                {
                    var polyLine     = overlay as MKPolyline;
                    var polyLineView = new MKPolylineRenderer(polyLine)
                    {
                        StrokeColor = UIColor.Red,
                        LineWidth   = 3
                    };
                    return(polyLineView);
                }

                return(new MKOverlayRenderer());
            }
Beispiel #27
0
 MKOverlayRenderer GetOverlayRenderer(MKMapView mapView, IMKOverlay overlayWrapper)
 {
     if (polylineRenderer == null && !Equals(overlayWrapper, null))
     {
         var overlay = Runtime.GetNSObject(overlayWrapper.Handle) as IMKOverlay;
         polylineRenderer = new MKPolylineRenderer(overlay as MKPolyline)
         {
             FillColor   = UIColor.Blue,
             StrokeColor = UIColor.Red,
             LineWidth   = 3,
             Alpha       = 0.4f
         };
     }
     return(polylineRenderer);
 }
        //Override OverLayRenderer to draw Polyline returned from directions
        public override MKOverlayRenderer OverlayRenderer(MKMapView mapView, IMKOverlay overlay)
        {
            if (!(overlay is MKPolyline))
            {
                return(null);
            }

            var route    = (MKPolyline)overlay;
            var renderer = new MKPolylineRenderer(route)
            {
                StrokeColor = UIColor.Blue
            };

            return(renderer);
        }
Beispiel #29
0
        protected override void OnElementChanged(ElementChangedEventArgs <View> e)
        {
            base.OnElementChanged(e);

            if (e.OldElement != null)
            {
                var nativeMap = Control as MKMapView;

                if (nativeMap != null && nativeMap.Overlays != null)
                {
                    nativeMap.RemoveOverlays(nativeMap.Overlays);
                    nativeMap.OverlayRenderer = null;
                    polylineRenderer          = null;
                }
            }
        }
Beispiel #30
0
        MKOverlayRenderer GetOverlayRenderer(MKMapView mapView, IMKOverlay overlay)
        {
            if (polylineRenderer == null)
            {
                var o = ObjCRuntime.Runtime.GetNSObject(overlay.Handle) as MKPolyline;

                polylineRenderer = new MKPolylineRenderer(o)
                {
                    FillColor   = UIColor.Blue,
                    StrokeColor = UIColor.Red,
                    LineWidth   = 3,
                    Alpha       = 0.4f
                };
            }
            return(polylineRenderer);
        }
 private MKOverlayRenderer GetOverlayRenderer(MKMapView mapView, IMKOverlay overlayWrapper)
 {
     if (PolylineRenderer == null && !Equals(overlayWrapper, null))
     {
         var        overlay    = Runtime.GetNSObject(overlayWrapper.Handle) as IMKOverlay;
         NSNumber[] dashValues = { 5, 5 };
         PolylineRenderer = new MKPolylineRenderer(overlay as MKPolyline)
         {
             FillColor       = Color.Gray.ToUIColor(),
             StrokeColor     = Color.Red.ToUIColor(),
             LineDashPattern = dashValues,
             LineWidth       = 0.8f
         };
     }
     return(PolylineRenderer);
 }
Beispiel #32
0
 public override MKOverlayRenderer OverlayRenderer(MKMapView mapView, IMKOverlay overlay)
 {
     if (overlay is MKPolygon)
     {
         var polygon     = overlay as MKPolygon;
         var polygonView = new MKPolygonRenderer(polygon);
         if (MapControlManager.IsOutOf && !ModeZoneFirstView.IsOnModeZone)
         {
             polygonView.FillColor   = UIColor.FromRGB(255, 76, 57).ColorWithAlpha((nfloat)0.4);
             polygonView.StrokeColor = UIColor.FromRGB(255, 76, 57).ColorWithAlpha((nfloat)0.2);
         }
         else
         {
             polygonView.FillColor   = UIColor.FromRGB(98, 218, 115).ColorWithAlpha((nfloat)0.4);
             polygonView.StrokeColor = UIColor.FromRGB(98, 218, 115).ColorWithAlpha((nfloat)0.2);
         }
         polygonView.LineWidth = 1;
         return(polygonView);
     }
     else if (overlay is MKCircle)
     {
         var circle     = overlay as MKCircle;
         var circleView = new MKCircleRenderer(circle);
         circleView.FillColor = UIColor.Blue;
         circleView.Alpha     = 0.2f;
         return(circleView);
     }
     else if (overlay is MKPolyline)
     {
         MKPolylineRenderer polylineRenderer = new MKPolylineRenderer(overlay as MKPolyline);
         if (MapControlManager.IsOutOf && !ModeZoneFirstView.IsOnModeZone)
         {
             polylineRenderer.FillColor   = UIColor.FromRGB(255, 76, 57);
             polylineRenderer.StrokeColor = UIColor.FromRGB(255, 76, 57);
         }
         else
         {
             polylineRenderer.FillColor   = UIColor.FromRGB(98, 218, 115);
             polylineRenderer.StrokeColor = UIColor.FromRGB(98, 218, 115);
         }
         polylineRenderer.LineWidth = 2;
         polylineRenderer.Alpha     = 0.8f;
         return(polylineRenderer);
     }
     return(null);
 }
        MKOverlayRenderer GetOverlayRenderer(MKMapView mapView, IMKOverlay overlay)
        {
            MKPolylineRenderer polylineRenderer = new MKPolylineRenderer(overlay as MKPolyline);

            if (currentRouteOverlay == overlay)
            {
                polylineRenderer.StrokeColor = RouteColor;
            }
            else
            {
                polylineRenderer.StrokeColor = AltRouteColor;
            }

            polylineRenderer.LineWidth = 4;

            return(polylineRenderer);
        }
        void FindRouteToSafeZone()
        {
            MKPlacemarkAddress address = null;

            //Start at our current location
            var fromLocation = new MKPlacemark (CDC.Coordinates, address);

            //Go to the safe zone
            var destinationLocation = new MKPlacemark (new CLLocationCoordinate2D (Cheyenne.Latitude, Cheyenne.Longitude), address);

            var request = new MKDirectionsRequest {
                Source = new MKMapItem (fromLocation),
                Destination = new MKMapItem (destinationLocation),
                RequestsAlternateRoutes = false
            };

            var directions = new MKDirections (request);

            //Async network call to Apple's servers
            directions.CalculateDirections ((response, error) => {
                if (error != null) {
                    Console.WriteLine (error.LocalizedDescription);
                } else {

                    foreach (var route in response.Routes) {
                        map.AddOverlay (route.Polyline);
                    }
                }
            });

            map.OverlayRenderer = (mapView, overlay) => {
                if (overlay is MKCircle) {
                    if (circleRenderer == null) {
                        circleRenderer = new MKCircleRenderer (overlay as MKCircle) {
                            FillColor = UIColor.Red,
                            Alpha = 0.5f
                        };
                    }
                    return circleRenderer;
                } else if (overlay is MKPolygon) {
                    if (polyRenderer == null) {
                        polyRenderer = new MKPolygonRenderer (overlay as MKPolygon);
                        polyRenderer.FillColor = UIColor.Green;
                        polyRenderer.Alpha = 0.5f;
                    }
                    return polyRenderer;
                } else if (overlay is MKPolyline) {
                    var route = (MKPolyline)overlay;
                    var renderer = new MKPolylineRenderer (route) {
                        StrokeColor = UIColor.Blue
                    };
                    return renderer;
                }
                return null;
            };

            Helpers.CenterOnUnitedStates (map);
        }