public List <Google.Maps.Polyline> getPathsFromSingleCallout(System.Xml.XmlDocument xmlString) { List <Google.Maps.Polyline> listofPolylinesObtainedFromSingleCallout = new List <Google.Maps.Polyline> (); var legs = xmlString.SelectNodes("DirectionsResponse/route/leg"); foreach (System.Xml.XmlNode singleLeg in legs) { //int stepCount = 1; var stepNodes = singleLeg.SelectNodes("step"); foreach (System.Xml.XmlNode singleStepNode in stepNodes) { var encodedPolylinePoints = singleStepNode.SelectSingleNode("polyline/points").InnerText; Google.Maps.MutablePath currentMutablePath = new Google.Maps.MutablePath(); Polyline currentPolyline = new Polyline(); List <CLLocationCoordinate2D> decodedCoordinates = DecodePolylinePoints(encodedPolylinePoints); foreach (CLLocationCoordinate2D point in decodedCoordinates) { currentMutablePath.AddCoordinate(point); } currentPolyline.Path = currentMutablePath; listofPolylinesObtainedFromSingleCallout.Add(currentPolyline); } } return(listofPolylinesObtainedFromSingleCallout); }
public override void ViewDidLoad() { base.ViewDidLoad(); CameraPosition camera = CameraPosition.FromCamera(GetInitialCameraPosition(), GetInitialCameraZoom()); mapView = Google.Maps.MapView.FromCamera(CGRect.Empty, camera); mapView.MyLocationEnabled = false; mapView.Settings.MyLocationButton = false; marker.IconView = new UIImageView(UIImage.FromBundle(ViewModel.Animal.ImageUrl)); marker.Map = mapView; var set = this.CreateBindingSet <MyAnimalActivityView, MyAnimalActivityViewModel>(); set.Bind(NameLabel).To(vm => vm.Animal.Name); set.Bind(TypeLabel).To(vm => vm.Animal.Type); set.Bind(LocationLabel).To(vm => vm.Animal.Location); set.Apply(); AnimLogoImageView.Transformations = ViewModel.Animal.AnimalImageTransformations; AnimLogoImageView.ImagePath = ViewModel.Animal.ImageUrl; DateLabel.Text = ViewModel.Animal.BirthdateValue.ToString(); View.AddSubview(mapView); mapView.Frame = MapPlaceHolderView.Frame; ViewModel.Logs.Changed += delegate { if (ViewModel.Logs.Value != null) { mapView.Animate(new CameraPosition(new CLLocationCoordinate2D(ViewModel.Logs.Value[0].Coordinate.Latitude, ViewModel.Logs.Value[0].Coordinate.Longitude), defaultZoom)); Polylines = new Polyline[ViewModel.Logs.Value.Length - 1]; Dates = new DateTime[ViewModel.Logs.Value.Length - 1]; Circles = new Circle[ViewModel.Logs.Value.Length]; for (int i = 0; i < ViewModel.Logs.Value.Length - 1; i++) { var path = new Google.Maps.MutablePath(); var polyline = new Google.Maps.Polyline(); path.AddCoordinate(new CLLocationCoordinate2D(latitude: ViewModel.Logs.Value[i].Coordinate.Latitude, longitude: ViewModel.Logs.Value[i].Coordinate.Longitude)); path.AddCoordinate(new CLLocationCoordinate2D(latitude: ViewModel.Logs.Value[i + 1].Coordinate.Latitude, longitude: ViewModel.Logs.Value[i + 1].Coordinate.Longitude)); polyline.Path = path; polyline.StrokeColor = CustomColor.JunctionXBlue; polyline.StrokeWidth = 2.5f; Polylines[i] = polyline; Dates[i] = ViewModel.Logs.Value[i + 1].DateTimeValue; var circle = new Circle(); circle.Position = new CLLocationCoordinate2D(latitude: ViewModel.Logs.Value[i].Coordinate.Latitude, longitude: ViewModel.Logs.Value[i].Coordinate.Longitude); circle.StrokeColor = CustomColor.JunctionXBlue; circle.FillColor = CustomColor.JunctionXBlue; circle.Radius = 7.5f; Circles[i] = circle; if (i + 1 == ViewModel.Logs.Value.Length - 1) { Circles[i + 1] = circle; } } TimeLabel.Text = Dates[0].ToString(); Slider.Value = 0; Slider.MinValue = 0; Slider.MaxValue = ViewModel.Logs.Value.Length - 1; Slider.TouchDragEnter += delegate { animate = false; StartButton.SetImage(UIImage.FromBundle("icPlayCircleFilled24Px"), UIControlState.Normal); }; Slider.ValueChanged += delegate { HandlePolylines(); }; HandlePolylines(); StartButton.TouchDown += delegate { if ((int)Slider.Value != (int)Slider.MaxValue) { animate = !animate; if (animate) { StartButton.SetImage(UIImage.FromBundle("icPauseCircleFilled24Px"), UIControlState.Normal); } else { StartButton.SetImage(UIImage.FromBundle("icPlayCircleFilled24Px"), UIControlState.Normal); } if (animate) { Animate(); } } }; } }; }