Esempio n. 1
0
        public void DrawPolyLines(string json)
        {
            var directionData = JsonConvert.DeserializeObject <DirectionParser>(json);

            // Decode Encoded Route
            var points = directionData.routes[0].overview_polyline.points;
            var line   = PolyUtil.Decode(points);

            ArrayList routeList = new ArrayList();

            foreach (LatLng item in line)
            {
                routeList.Add(item);
            }
            // Draw on map
            PolylineOptions polylineOptions = new PolylineOptions()
                                              .AddAll(routeList)
                                              .InvokeWidth(10)
                                              .InvokeColor(Color.Teal)
                                              .InvokeStartCap(new SquareCap())
                                              .InvokeEndCap(new SquareCap())
                                              .InvokeJointType(JointType.Round)
                                              .Geodesic(true);

            Android.Gms.Maps.Model.Polyline mPolyline = map.AddPolyline(polylineOptions);
        }
Esempio n. 2
0
        protected override void StartMap()
        {
            var decodePath = PolyUtil.Decode(LINE).ToList();

            googleMap.AddPolyline(new PolylineOptions().AddAll(new ArrayList(decodePath)));
            googleMap.MoveCamera(CameraUpdateFactory.NewLatLngZoom(new LatLng(-33.8256, 151.2395), 12));
        }
Esempio n. 3
0
        public void DrawTripOnMap(string json)
        {
            DirectionParser directionData = JsonConvert.DeserializeObject <DirectionParser>(json);

            var    pointCode  = directionData.routes[0].overview_polyline.points;
            var    line       = PolyUtil.Decode(pointCode);
            LatLng firstpoint = line[0];
            LatLng lastpoint  = line[^ 1];
 public void AddPolyResource(Resource resource)
 {
     PolyUtil.GetPolyResult(resource.content, (polyResult) =>
     {
         resources.Add(resource.id, resource);
         gameObjectresources.Add(resource.id, polyResult);
     });
 }
Esempio n. 5
0
        public void DrawTripOnMap(string json)
        {
            Android.Gms.Maps.Model.Polyline mPolyline;
            Marker pickupMarker;

            var directionData = JsonConvert.DeserializeObject <DirectionParser>(json);

            var    pointCode  = directionData.routes[0].overview_polyline.points;
            var    line       = PolyUtil.Decode(pointCode);
            LatLng firstpoint = line[0];
            LatLng lastpoint  = line[line.Count - 1];

            //My take off position
            MarkerOptions markerOptions = new MarkerOptions();

            markerOptions.SetPosition(firstpoint);
            markerOptions.SetIcon(BitmapDescriptorFactory.DefaultMarker(BitmapDescriptorFactory.HueRed));
            pickupMarker = mainMap.AddMarker(markerOptions);

            //Constanly Changing Current Location;
            MarkerOptions positionMarkerOption = new MarkerOptions();

            positionMarkerOption.SetPosition(firstpoint);
            positionMarkerOption.SetTitle("Current Location");
            positionMarkerOption.SetIcon(BitmapDescriptorFactory.FromResource(Resource.Drawable.position));
            positionMarker = mainMap.AddMarker(positionMarkerOption);

            MarkerOptions markerOptions1 = new MarkerOptions();

            markerOptions1.SetPosition(lastpoint);
            markerOptions1.SetTitle("Pickup Location");
            markerOptions1.SetIcon(BitmapDescriptorFactory.DefaultMarker(BitmapDescriptorFactory.HueGreen));
            destinationMarker = mainMap.AddMarker(markerOptions1);

            ArrayList routeList     = new ArrayList();
            int       locationCount = 0;

            foreach (LatLng item in line)
            {
                routeList.Add(item);
                locationCount++;
                Console.WriteLine("Position" + locationCount.ToString() + "=" + item.Latitude.ToString() + "," + item.Longitude.ToString());
            }

            PolylineOptions polylineOptions = new PolylineOptions()
                                              .AddAll(routeList)
                                              .InvokeWidth(20)
                                              .InvokeColor(Color.Teal)
                                              .InvokeStartCap(new SquareCap())
                                              .InvokeEndCap(new SquareCap())
                                              .InvokeJointType(JointType.Round)
                                              .Geodesic(true);

            mPolyline = mainMap.AddPolyline(polylineOptions);
            mainMap.UiSettings.ZoomControlsEnabled = true;
            mainMap.AnimateCamera(CameraUpdateFactory.NewLatLngZoom(firstpoint, 15));
            destinationMarker.ShowInfoWindow();
        }
Esempio n. 6
0
        protected override void startDemo(bool isRestore)
        {
            List <LatLng> decodedPath = PolyUtil.Decode(LINE).ToList();

            getMap().AddPolyline(new PolylineOptions().AddAll(new ArrayList(decodedPath)));

            if (!isRestore)
            {
                getMap().MoveCamera(CameraUpdateFactory.NewLatLngZoom(new LatLng(-33.8256, 151.2395), 12));
            }
        }
Esempio n. 7
0
        public void DrawTripMap(string json)
        {
            var directionData = JsonConvert.DeserializeObject <DirectionParser>(json);

            //Decode Encoded Route
            var points = directionData.routes[0].overview_polyline.points;
            var line   = PolyUtil.Decode(points);

            ArrayList routeList = new ArrayList();

            foreach (LatLng item in line)
            {
                routeList.Add(item);
            }

            //Draw Polylines on Map
            PolylineOptions polylineOptions = new PolylineOptions()
                                              .AddAll(routeList)
                                              .InvokeWidth(10)
                                              .InvokeColor(Color.Teal)
                                              .InvokeStartCap(new SquareCap())
                                              .InvokeEndCap(new SquareCap())
                                              .InvokeJointType(JointType.Round)
                                              .Geodesic(true);

            Android.Gms.Maps.Model.Polyline mPolyline = map.AddPolyline(polylineOptions);

            //Get the first point and last point
            LatLng firstpoint = line[0];
            LatLng lastpoint  = line[line.Count - 1];

            //Pickup marker options
            MarkerOptions pickupMarkerOptions = new MarkerOptions();

            pickupMarkerOptions.SetPosition(firstpoint);
            pickupMarkerOptions.SetTitle("Pickup Location");
            pickupMarkerOptions.SetIcon(BitmapDescriptorFactory.DefaultMarker(BitmapDescriptorFactory.HueGreen));

            //Destination marker options
            MarkerOptions destinationMarkerOptions = new MarkerOptions();

            destinationMarkerOptions.SetPosition(lastpoint);
            destinationMarkerOptions.SetTitle("Destination");
            destinationMarkerOptions.SetIcon(BitmapDescriptorFactory.DefaultMarker(BitmapDescriptorFactory.HueRed));

            Marker pickupMarker      = map.AddMarker(pickupMarkerOptions);
            Marker destinationMarker = map.AddMarker(destinationMarkerOptions);

            //Get Trip Bounds
            double southlng = directionData.routes[0].bounds.southwest.lng;
            double southlat = directionData.routes[0].bounds.southwest.lat;
            double northlng = directionData.routes[0].bounds.northeast.lng;
            double northlat = directionData.routes[0].bounds.northeast.lat;

            LatLng       southwest = new LatLng(southlat, southlng);
            LatLng       northeast = new LatLng(northlat, northlng);
            LatLngBounds tripBound = new LatLngBounds(southwest, northeast);

            //map.AnimateCamera(CameraUpdateFactory.NewLatLngBounds(tripBound, 470)); //causes crashing the app
            map.SetPadding(40, 70, 40, 70);
            pickupMarker.ShowInfoWindow();
            destinationMarker.ShowInfoWindow();

            duration       = directionData.routes[0].legs[0].duration.value;
            distance       = directionData.routes[0].legs[0].distance.value;
            durationString = directionData.routes[0].legs[0].duration.text;
            distanceString = directionData.routes[0].legs[0].distance.text;
        }
Esempio n. 8
0
        public void DrawTripOnMap(string json)
        {
            var directionData = JsonConvert.DeserializeObject <DirectionParser>(json);

            //Decode Encoded Route
            var points = directionData.routes[0].overview_polyline.points;
            var line   = PolyUtil.Decode(points);

            ArrayList routeList = new ArrayList();

            foreach (LatLng item in line)
            {
                routeList.Add(item);
            }
            //double distance = 0;
            //Xamarin.Essentials.Location source;
            //Xamarin.Essentials.Location dest;
            //for(int i=0; i<line.Count-1; i++)
            //{
            //    source = new Xamarin.Essentials.Location(line[i].Latitude, line[i].Longitude);
            //    dest = new Xamarin.Essentials.Location(line[i + 1].Latitude, line[i + 1].Longitude);
            //    distance += source.CalculateDistance(dest, DistanceUnits.Kilometers);
            //    routeList.Add(line[i]);
            //    if (i == line.Count - 2)
            //        routeList.Add(line[i + 1]);
            //}

            //Draw Polylines on Map
            PolylineOptions polylineOptions = new PolylineOptions()
                                              .AddAll(routeList)
                                              .InvokeWidth(10)
                                              .InvokeColor(Color.Teal)
                                              .InvokeStartCap(new SquareCap())
                                              .InvokeEndCap(new SquareCap())
                                              .InvokeJointType(JointType.Round)
                                              .Geodesic(true);

            Android.Gms.Maps.Model.Polyline mPolyline = map.AddPolyline(polylineOptions);

            //Get first point and lastpoint
            LatLng firstpoint = line[0];
            LatLng lastpoint  = line[line.Count - 1];

            //Pickup marker options
            MarkerOptions pickupMarkerOptions = new MarkerOptions();

            pickupMarkerOptions.SetPosition(firstpoint);
            pickupMarkerOptions.SetTitle("Pickup Location");
            pickupMarkerOptions.SetIcon(BitmapDescriptorFactory.DefaultMarker(BitmapDescriptorFactory.HueGreen));

            //Destination marker options
            MarkerOptions destinationMarkerOptions = new MarkerOptions();

            destinationMarkerOptions.SetPosition(lastpoint);
            destinationMarkerOptions.SetTitle("Destination");
            destinationMarkerOptions.SetIcon(BitmapDescriptorFactory.DefaultMarker(BitmapDescriptorFactory.HueRed));


            MarkerOptions driverMarkerOptions = new MarkerOptions();

            driverMarkerOptions.SetPosition(firstpoint);
            driverMarkerOptions.SetTitle("Current Location");
            driverMarkerOptions.SetIcon(BitmapDescriptorFactory.FromResource(Resource.Drawable.position));
            driverMarkerOptions.Visible(false);


            pickupMarker = map.AddMarker(pickupMarkerOptions);
            Marker destinationMarker = map.AddMarker(destinationMarkerOptions);

            driverLocationMarker = map.AddMarker(driverMarkerOptions);

            //Get Trip Bounds
            double southlng = directionData.routes[0].bounds.southwest.lng;
            double southlat = directionData.routes[0].bounds.southwest.lat;
            double northlng = directionData.routes[0].bounds.northeast.lng;
            double northlat = directionData.routes[0].bounds.northeast.lat;

            LatLng       southwest = new LatLng(southlat, southlng);
            LatLng       northeast = new LatLng(northlat, northlng);
            LatLngBounds tripBound = new LatLngBounds(southwest, northeast);

            map.AnimateCamera(CameraUpdateFactory.NewLatLngBounds(tripBound, 100));
            map.SetPadding(40, 40, 40, 40);
            pickupMarker.ShowInfoWindow();

            duration       = directionData.routes[0].legs[0].duration.value;
            distance       = directionData.routes[0].legs[0].distance.value;
            durationstring = directionData.routes[0].legs[0].duration.text;
            distanceString = directionData.routes[0].legs[0].distance.text;
        }
Esempio n. 9
0
        protected override void startDemo(bool isRestore)
        {
            GoogleMap map = getMap();

            // Original line
            List <LatLng> line = PolyUtil.Decode(LINE).ToList();

            map.AddPolyline(new PolylineOptions()
                            .AddAll(new ArrayList(line))
                            .InvokeColor(Color.Black));

            if (!isRestore)
            {
                map.MoveCamera(CameraUpdateFactory.NewLatLngZoom(new LatLng(28.05870, -82.4090), 15));
            }

            List <LatLng> simplifiedLine;

            /*
             * Simplified lines - increasing the tolerance will result in fewer points in the simplified
             * line
             */
            double tolerance = 5; // meters

            simplifiedLine = PolyUtil.Simplify(line, tolerance).ToList();
            map.AddPolyline(new PolylineOptions()
                            .AddAll(new ArrayList(simplifiedLine))
                            .InvokeColor(Color.Red - ALPHA_ADJUSTMENT));

            tolerance      = 20; // meters
            simplifiedLine = PolyUtil.Simplify(line, tolerance).ToList();
            map.AddPolyline(new PolylineOptions()
                            .AddAll(new ArrayList(simplifiedLine))
                            .InvokeColor(Color.Green - ALPHA_ADJUSTMENT));

            tolerance      = 50; // meters
            simplifiedLine = PolyUtil.Simplify(line, tolerance).ToList();
            map.AddPolyline(new PolylineOptions()
                            .AddAll(new ArrayList(simplifiedLine))
                            .InvokeColor(Color.Magenta - ALPHA_ADJUSTMENT));

            tolerance      = 500; // meters
            simplifiedLine = PolyUtil.Simplify(line, tolerance).ToList();
            map.AddPolyline(new PolylineOptions()
                            .AddAll(new ArrayList(simplifiedLine))
                            .InvokeColor(Color.Yellow - ALPHA_ADJUSTMENT));

            tolerance      = 1000; // meters
            simplifiedLine = PolyUtil.Simplify(line, tolerance).ToList();
            map.AddPolyline(new PolylineOptions()
                            .AddAll(new ArrayList(simplifiedLine))
                            .InvokeColor(Color.Blue - ALPHA_ADJUSTMENT));


            // Triangle polygon - the polygon should be closed
            List <LatLng> triangle = new List <LatLng>();

            triangle.Add(new LatLng(28.06025, -82.41030));  // Should match last point
            triangle.Add(new LatLng(28.06129, -82.40945));
            triangle.Add(new LatLng(28.06206, -82.40917));
            triangle.Add(new LatLng(28.06125, -82.40850));
            triangle.Add(new LatLng(28.06035, -82.40834));
            triangle.Add(new LatLng(28.06038, -82.40924));
            triangle.Add(new LatLng(28.06025, -82.41030));  // Should match first point

            map.AddPolygon(new PolygonOptions()
                           .AddAll(new ArrayList(triangle))
                           .InvokeFillColor(Color.Blue - ALPHA_ADJUSTMENT)
                           .InvokeStrokeColor(Color.Blue)
                           .InvokeStrokeWidth(5));

            // Simplified triangle polygon
            tolerance = 88; // meters
            List <LatLng> simplifiedTriangle = PolyUtil.Simplify(triangle, tolerance).ToList();

            map.AddPolygon(new PolygonOptions()
                           .AddAll(new ArrayList(simplifiedTriangle))
                           .InvokeFillColor(Color.Yellow - ALPHA_ADJUSTMENT)
                           .InvokeStrokeColor(Color.Yellow)
                           .InvokeStrokeWidth(5));

            // Oval polygon - the polygon should be closed
            List <LatLng> oval = PolyUtil.Decode(OVAL_POLYGON).ToList();

            map.AddPolygon(new PolygonOptions()
                           .AddAll(new ArrayList(oval))
                           .InvokeFillColor(Color.Blue - ALPHA_ADJUSTMENT)
                           .InvokeStrokeColor(Color.Blue)
                           .InvokeStrokeWidth(5));

            // Simplified oval polygon
            tolerance = 10; // meters
            List <LatLng> simplifiedOval = PolyUtil.Simplify(oval, tolerance).ToList();

            map.AddPolygon(new PolygonOptions()
                           .AddAll(new ArrayList(simplifiedOval))
                           .InvokeFillColor(Color.Yellow - ALPHA_ADJUSTMENT)
                           .InvokeStrokeColor(Color.Yellow)
                           .InvokeStrokeWidth(5));
        }
Esempio n. 10
0
        public void DrawTripOnMap(string Json)
        {
            // TryCatch to handle any null Object exception.
            try
            {
                mPolyline.Remove();
                PickupMarker.Remove();
                destinationMarker.Remove();
            }
            catch (Exception)
            {
            }
            var directionData = JsonConvert.DeserializeObject <DirectionParser>(Json);

            for (int i = 0; i < directionData.routes.Count; i++)
            {
                foreach (var point in RedissuePoints)
                {
                    foreach (var waypoints in PolyUtil.Decode(directionData.routes[i].overview_polyline.points))
                    {
                        if (Math.Abs(Convert.ToDouble(waypoints.Latitude) - Convert.ToDouble(point.Latitude)) <= 0.00001 && Math.Abs(Convert.ToDouble(waypoints.Longitude) - Convert.ToDouble(point.Longitude)) <= 0.00001)
                        {
                            issueWayPointCount[i] += 1;
                        }
                    }
                }
            }

            int routeIndex = issueWayPointCount.ToList().IndexOf(issueWayPointCount.Min());
            //Decode Encoded route
            var Points = directionData.routes[routeIndex].overview_polyline.points;

            //enumerate through this line variable through for loop and
            //check for any points that matches for points contained in preloaded issues array
            var Line = PolyUtil.Decode(Points);

            ArrayList routeList = new ArrayList();

            foreach (LatLng item in Line)
            {
                routeList.Add(item);
            }

            //Draw Polylines on map
            PolylineOptions polylineOptions = new PolylineOptions()
                                              .AddAll(routeList)
                                              .InvokeWidth(10)
                                              .InvokeColor(Color.BlueViolet)
                                              .InvokeStartCap(new SquareCap())
                                              .InvokeEndCap(new RoundCap())
                                              .InvokeJointType(JointType.Round)
                                              .Geodesic(true);



            mPolyline = googleMap.AddPolyline(polylineOptions);

            //Get first and last point
            LatLng firstpoint = Line[0];
            LatLng lastpoint  = Line[Line.Count - 1];

            //Creating Marker Options
            MarkerOptions pickupMarkerOptions = new MarkerOptions();

            pickupMarkerOptions.SetPosition(firstpoint);
            pickupMarkerOptions.SetTitle("Start Location");
            BitmapDescriptor bitmapDescPickup = BitmapDescriptorFactory.FromResource(Resource.Drawable.starticon);

            pickupMarkerOptions.SetIcon(bitmapDescPickup);

            MarkerOptions destinationMarkerOptions = new MarkerOptions();

            destinationMarkerOptions.SetPosition(lastpoint);
            destinationMarkerOptions.SetTitle("Destination");
            BitmapDescriptor bitmapDescDestination = BitmapDescriptorFactory.FromResource(Resource.Drawable.destinationicon);

            destinationMarkerOptions.SetIcon(bitmapDescDestination);

            PickupMarker      = googleMap.AddMarker(pickupMarkerOptions);
            destinationMarker = googleMap.AddMarker(destinationMarkerOptions);

            //Get Trip bounds
            double southlng = directionData.routes[0].bounds.southwest.lng;
            double southlat = directionData.routes[0].bounds.southwest.lat;
            double northlng = directionData.routes[0].bounds.northeast.lng;
            double northlat = directionData.routes[0].bounds.northeast.lat;

            LatLng southwest = new LatLng(southlat, southlng);
            LatLng northeast = new LatLng(northlat, northlng);

            LatLngBounds tripBounds = new LatLngBounds(southwest, northeast);

            googleMap.AnimateCamera(CameraUpdateFactory.NewLatLngBounds(tripBounds, 4));
            //googleMap.SetPadding(40, 70, 40, 70);
        }
        public void DrawTripOnMap(string json)
        {
            routeList.Clear();
            var directionData = JsonConvert.DeserializeObject <DirectionParser>(json);

            //Decode Encoded Route
            var points = directionData.routes[0].overview_polyline.points;
            var line   = PolyUtil.Decode(points);

            foreach (LatLng item in line)
            {
                routeList.Add(item);
            }

            //Draw Polylines on Map
            PolylineOptions polylineOptions = new PolylineOptions()
                                              .AddAll(routeList)
                                              .InvokeWidth(6)
                                              .InvokeColor(Color.Blue)
                                              .InvokeStartCap(new SquareCap())
                                              .InvokeEndCap(new SquareCap())
                                              .InvokeJointType(JointType.Round)
                                              .Geodesic(true);

            mPolyline = map.AddPolyline(polylineOptions);

            //Get first point and lastpoint
            LatLng firstpoint = line[0];
            LatLng lastpoint  = line[line.Count - 1];

            duration       = directionData.routes[0].legs[0].duration.value;
            distance       = directionData.routes[0].legs[0].distance.value;
            durationstring = directionData.routes[0].legs[0].duration.text;
            distanceString = directionData.routes[0].legs[0].distance.text;
            startAddress   = directionData.routes[0].legs[0].start_address;

            //Pickup marker options
            pickupMarkerOptions.SetPosition(firstpoint);
            pickupMarkerOptions.SetTitle("My Location");
            pickupMarkerOptions.SetSnippet(durationstring);
            pickupMarkerOptions.SetIcon(BitmapDescriptorFactory.DefaultMarker(BitmapDescriptorFactory.HueRed));

            //Destination marker options
            destinationMarkerOptions.SetPosition(lastpoint);
            destinationMarkerOptions.SetTitle(sessionManager.GetDestination());
            destinationMarkerOptions.SetIcon(BitmapDescriptorFactory.DefaultMarker(BitmapDescriptorFactory.HueGreen));

            pickupMarker = map.AddMarker(pickupMarkerOptions);

            destinationMarker = map.AddMarker(destinationMarkerOptions);

            //Get Trip Bounds
            double southlng = directionData.routes[0].bounds.southwest.lng;
            double southlat = directionData.routes[0].bounds.southwest.lat;
            double northlng = directionData.routes[0].bounds.northeast.lng;
            double northlat = directionData.routes[0].bounds.northeast.lat;

            LatLng       southwest = new LatLng(southlat, southlng);
            LatLng       northeast = new LatLng(northlat, northlng);
            LatLngBounds tripBound = new LatLngBounds(southwest, northeast);

            cameraUpdate = CameraUpdateFactory.NewLatLngBounds(tripBound, 200);
            map.AnimateCamera(cameraUpdate);

            destinationMarker.ShowInfoWindow();
        }
        public void DrawRouteOnMap(string json)
        {
            var directionData = JsonConvert.DeserializeObject <DirectionParser>(json);

            //Decode Encoded Route
            var points = directionData.routes[0].overview_polyline.points;
            var line   = PolyUtil.Decode(points);

            ArrayList routeList = new ArrayList();

            foreach (LatLng item in line)
            {
                routeList.Add(item);
            }

            //Draw Polylines on Map
            PolylineOptions polylineOptions = new PolylineOptions()
                                              .AddAll(routeList)
                                              .InvokeWidth(10)
                                              .InvokeColor(Color.Cyan)
                                              .InvokeStartCap(new SquareCap())
                                              .InvokeEndCap(new SquareCap())
                                              .InvokeJointType(JointType.Round)
                                              .Geodesic(true);

            Android.Gms.Maps.Model.Polyline mPolyline = map.AddPolyline(polylineOptions);

            //Getting start and end destination points
            LatLng startPoint = line[0];
            LatLng endPoint   = line[line.Count - 1];

            //Start marker options
            MarkerOptions startMarkerOptions = new MarkerOptions();

            startMarkerOptions.SetPosition(startPoint);
            startMarkerOptions.SetTitle("Start Location");
            startMarkerOptions.SetIcon(BitmapDescriptorFactory.DefaultMarker(BitmapDescriptorFactory.HueGreen));

            //End marker options
            MarkerOptions endMarkerOptions = new MarkerOptions();

            endMarkerOptions.SetPosition(endPoint);
            endMarkerOptions.SetTitle("End Location");
            endMarkerOptions.SetIcon(BitmapDescriptorFactory.DefaultMarker(BitmapDescriptorFactory.HueRed));

            Marker startMarker = map.AddMarker(startMarkerOptions);
            Marker endMarker   = map.AddMarker(endMarkerOptions);

            //Get route bounds
            double southlng = directionData.routes[0].bounds.southwest.lng;
            double southlat = directionData.routes[0].bounds.southwest.lat;
            double northlng = directionData.routes[0].bounds.northeast.lng;
            double northlat = directionData.routes[0].bounds.northeast.lat;

            LatLng       southwest  = new LatLng(southlat, southlng);
            LatLng       northeast  = new LatLng(northlat, northlng);
            LatLngBounds routeBound = new LatLngBounds(southwest, northeast);

            map.AnimateCamera(CameraUpdateFactory.NewLatLngBounds(routeBound, 470));
            map.SetPadding(40, 70, 40, 70);
            startMarker.ShowInfoWindow();

            distance       = directionData.routes[0].legs[0].distance.value;
            distanceString = directionData.routes[0].legs[0].distance.text;
        }
Esempio n. 13
0
        public void DrawPolylineOnMap(string json, GoogleMap mainMap)
        {
            Android.Gms.Maps.Model.Polyline mPolyLine;

            var directionData = JsonConvert.DeserializeObject <DirectionParser>(json);

            string durationString = directionData.routes[0].legs[0].duration.text;
            string distanceString = directionData.routes[0].legs[0].distance.text;

            var polylineCode = directionData.routes[0].overview_polyline.points;
            var line         = PolyUtil.Decode(polylineCode);

            LatLng    firstpoint = line[0];
            LatLng    lastpoint  = line[line.Count - 1];
            ArrayList routeList  = new ArrayList();

            int locationCount = 0;

            foreach (LatLng item in line)
            {
                routeList.Add(item);
                locationCount++;

                Console.WriteLine("Poistion " + locationCount.ToString() + " = " + item.Latitude + "," + item.Longitude.ToString());
            }

            PolylineOptions polylineOptions = new PolylineOptions()
                                              .AddAll(routeList)
                                              .InvokeWidth(10)
                                              .InvokeColor(Color.Teal)
                                              .Geodesic(true)
                                              .InvokeJointType(JointType.Round);

            mPolyLine = mainMap.AddPolyline(polylineOptions);

            // Location Marker
            MarkerOptions locationMarkerOption = new MarkerOptions();

            locationMarkerOption.SetPosition(firstpoint);
            locationMarkerOption.SetTitle("My Location");
            locationMarkerOption.SetIcon(BitmapDescriptorFactory.DefaultMarker(BitmapDescriptorFactory.HueGreen));
            Marker locationmarker = mainMap.AddMarker(locationMarkerOption);

            // Destination Marker
            MarkerOptions destinationMarkerOption = new MarkerOptions();

            destinationMarkerOption.SetPosition(lastpoint);
            destinationMarkerOption.SetTitle("Destination");
            destinationMarkerOption.SetSnippet(durationString + ", " + distanceString);
            destinationMarkerOption.SetIcon(BitmapDescriptorFactory.DefaultMarker(BitmapDescriptorFactory.HueRed));
            Marker destinationMarker = mainMap.AddMarker(destinationMarkerOption);

            // Current Location Marker
            MarkerOptions positionMakerOption = new MarkerOptions();

            positionMakerOption.SetPosition(firstpoint);
            positionMakerOption.SetTitle("Current Location");
            positionMakerOption.SetIcon(BitmapDescriptorFactory.FromResource(Resource.Drawable.positionmarker));
            positionMakerOption.Visible(false);
            currentPositionMarker = mainMap.AddMarker(positionMakerOption);

            // Location Circle
            CircleOptions locationCircleOption = new CircleOptions();

            locationCircleOption.InvokeCenter(firstpoint);
            locationCircleOption.InvokeRadius(30);
            locationCircleOption.InvokeStrokeColor(Color.Teal);
            locationCircleOption.InvokeFillColor(Color.Teal);
            mainMap.AddCircle(locationCircleOption);

            // Destination Circle
            CircleOptions destiationCircleOption = new CircleOptions();

            destiationCircleOption.InvokeCenter(lastpoint);
            destiationCircleOption.InvokeRadius(30);
            destiationCircleOption.InvokeStrokeColor(Color.Teal);
            destiationCircleOption.InvokeFillColor(Color.Teal);
            mainMap.AddCircle(destiationCircleOption);

            LatLng southwest = new LatLng(directionData.routes[0].bounds.southwest.lat, directionData.routes[0].bounds.southwest.lng);
            LatLng northeast = new LatLng(directionData.routes[0].bounds.northeast.lat, directionData.routes[0].bounds.northeast.lng);

            LatLngBounds tripBounds = new LatLngBounds(southwest, northeast);

            mainMap.AnimateCamera(CameraUpdateFactory.NewLatLngBounds(tripBounds, 150));
            mainMap.UiSettings.ZoomControlsEnabled = true;
            destinationMarker.ShowInfoWindow();
        }
Esempio n. 14
0
        public void DrawTripToDestination(string json)
        {
            Android.Gms.Maps.Model.Polyline mPolyline;
            //Marker pickupMarker;

            var directionData = JsonConvert.DeserializeObject <DirectionParser>(json);

            var    pointCode  = directionData.routes[0].overview_polyline.points;
            var    line       = PolyUtil.Decode(pointCode);
            LatLng firstpoint = line[0];
            LatLng lastpoint  = line[line.Count - 1];



            // Take off position
            MarkerOptions markerOptions = new MarkerOptions();

            markerOptions.SetPosition(firstpoint);
            markerOptions.SetIcon(BitmapDescriptorFactory.DefaultMarker(BitmapDescriptorFactory.HueGreen));
            markerOptions.SetTitle("Pickup Location");
            pickupMarker = mainMap.AddMarker(markerOptions);


            // constantly change current location
            MarkerOptions positionMarkerOption = new MarkerOptions();

            positionMarkerOption.SetPosition(firstpoint);
            positionMarkerOption.SetTitle("Current Location");
            positionMarkerOption.SetIcon(BitmapDescriptorFactory.FromResource(Resource.Drawable.position));
            positionMarker = mainMap.AddMarker(positionMarkerOption);


            // pick up position
            MarkerOptions markerOptions1 = new MarkerOptions();

            markerOptions1.SetPosition(lastpoint);
            markerOptions1.SetTitle("Destination");
            markerOptions1.SetIcon(BitmapDescriptorFactory.DefaultMarker(BitmapDescriptorFactory.HueRed));
            destinationMarker = mainMap.AddMarker(markerOptions1);

            // Array List
            // From the current position to pick up location

            ArrayList routeList     = new ArrayList();
            int       locationCount = 0;

            foreach (LatLng item in line)
            {
                routeList.Add(item);
                locationCount++;
                Console.WriteLine("Position" + locationCount.ToString() + " = " + item.Latitude.ToString() + " , " + item.Longitude.ToString());
            }


            // Polylines in map
            // specifications of the polylines
            PolylineOptions polylineOptions = new PolylineOptions()
                                              .AddAll(routeList)
                                              .InvokeWidth(10)
                                              .InvokeColor(Color.Teal)
                                              .InvokeStartCap(new SquareCap())
                                              .InvokeEndCap(new SquareCap())
                                              .InvokeJointType(JointType.Round)
                                              .Geodesic(true);


            // draw the polyline
            mPolyline = mainMap.AddPolyline(polylineOptions);
            mainMap.UiSettings.ZoomControlsEnabled = true;
            mainMap.TrafficEnabled = true;

            LatLng southwest = new LatLng(directionData.routes[0].bounds.southwest.lat, directionData.routes[0].bounds.southwest.lng);
            LatLng northeast = new LatLng(directionData.routes[0].bounds.northeast.lat, directionData.routes[0].bounds.northeast.lng);

            LatLngBounds tripBounds = new LatLngBounds(southwest, northeast);

            mainMap.AnimateCamera(CameraUpdateFactory.NewLatLngBounds(tripBounds, 100));

            destinationMarker.ShowInfoWindow();
        }