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); } }
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 }
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(); } }
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); } }
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); }
/* * 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); } }
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)); }
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); }
public override MKOverlayRenderer OverlayRenderer(MKMapView mapView, IMKOverlay overlay) { MKPolylineRenderer polylineRenderer = new MKPolylineRenderer(overlay as MKPolyline); polylineRenderer.StrokeColor = UIColor.Blue; polylineRenderer.LineWidth = 2f; return(polylineRenderer); }
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; }
//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; }
/// <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); }
/// <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); }
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); }
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); }
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); }
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; } }
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()); }
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); }
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; } } }
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); }
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); }