示例#1
0
        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);
        }
示例#2
0
        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();
                            }
                        }
                    };
                }
            };
        }