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); }
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)); }
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); }); }
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(); }
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)); } }
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; }
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; }
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)); }
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; }
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(); }
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(); }