예제 #1
0
        void DrawCircles(Point e)
        {
            if (circleOptionsInner == null)
            {
                circleOptionsInner = new CircleOptions().InvokeCenter(new LatLng(e.X, e.Y)).InvokeRadius(80).InvokeFillColor(Android.Graphics.Color.ParseColor("#0D15b8fe")).InvokeStrokeWidth(0);
                circleInner        = NativeMap.AddCircle(circleOptionsInner);
            }

            if (circleOptionsOuter == null)
            {
                circleOptionsOuter = new CircleOptions().InvokeCenter(new LatLng(e.X, e.Y)).InvokeRadius(350).InvokeFillColor(Android.Graphics.Color.ParseColor("#1A15b8fe")).InvokeStrokeWidth(0);
                circleOuter        = NativeMap.AddCircle(circleOptionsOuter);
            }

            if (firstLoad == true)
            {
                NativeMap.MoveCamera(CameraUpdateFactory.NewLatLngZoom(new LatLng(e.X, e.Y), 15.8f));
                var animation = new Animation(v => circleInner.Radius = v, 25, 200);
                animation.Commit(Xamarin.Forms.Application.Current.MainPage, "SimpleAnimation", 500, 2000, Easing.CubicOut, null, () => true);
                var fadeEffect = new Animation(v => circleInner.FillColor = Android.Graphics.Color.ParseColor(string.Format("#{0}15b8fe", ((int)(v < 0 ? 0 : v)).ToString("D2"))), 99, -20);
                fadeEffect.Commit(Xamarin.Forms.Application.Current.MainPage, "FadeAnimation", 500, 2000, Easing.Linear, null, () => true);
                firstLoad = false;
            }
            circleInner.Center = new LatLng(e.X, e.Y);
            circleOuter.Center = new LatLng(e.X, e.Y);
        }
예제 #2
0
        protected override void OnMapReady(GoogleMap map)
        {
            base.OnMapReady(map);

            var polylineOptions = new PolylineOptions();

            polylineOptions.InvokeColor(0x702418ff);

            foreach (var position in routeCoordinates)
            {
                polylineOptions.Add(new LatLng(position.Latitude, position.Longitude));
            }

            NativeMap.AddPolyline(polylineOptions);

            foreach (Bus bus in BusList.busList)
            {
                if (bus.route == "blue")
                {
                    CircleOptions circleOptions = new CircleOptions();
                    circleOptions.InvokeCenter(new LatLng(bus.lat, bus.lng));
                    circleOptions.InvokeRadius(30);
                    circleOptions.InvokeFillColor(0X700000ff);
                    circleOptions.InvokeStrokeColor(0X70FFFFFF);
                    circleOptions.InvokeStrokeWidth(5);

                    NativeMap.AddCircle(circleOptions);
                }
            }
        }
예제 #3
0
        protected override MarkerOptions CreateMarker(Pin pin)
        {
            if (pin is CirclePin)
            {
                //create an overlay circle, and add to map
                var circleOptions = new CircleOptions();
                circleOptions.InvokeCenter(new LatLng(pin.Position.Latitude, pin.Position.Longitude));
                circleOptions.InvokeRadius(PublishedData.PinOverlayRadius);
                circleOptions.InvokeFillColor(0X66FF0000);
                circleOptions.InvokeStrokeColor(0X66FF0000);
                circleOptions.InvokeStrokeWidth(0);
                Circle circle = NativeMap.AddCircle(circleOptions);
                (pin as CirclePin).Overlay = circle;
            }

            // marker,or pin.
            var marker = new MarkerOptions();

            marker.SetPosition(new LatLng(pin.Position.Latitude, pin.Position.Longitude));
            marker.Anchor(0.5f, 0.5f);// set anchor to to middle of icon
            marker.SetTitle(pin.Label);
            marker.SetSnippet(pin.Address);
            Bitmap imageBitmap = BitmapFactory.DecodeResource(Resources, Resource.Drawable.pin);
            Bitmap resizedIcon = Bitmap.CreateScaledBitmap(imageBitmap, 50, 50, false);

            marker.SetIcon(BitmapDescriptorFactory.FromBitmap(resizedIcon));

            return(marker);
        }
        protected override void OnMapReady(Android.Gms.Maps.GoogleMap map)
        {
            base.OnMapReady(map);

            var circleOptions = new CircleOptions();

            circleOptions.InvokeCenter(new LatLng(circle.Position.Latitude, circle.Position.Longitude));
            circleOptions.InvokeRadius(circle.Radius);
            circleOptions.InvokeFillColor(0X66FF0000);
            circleOptions.InvokeStrokeColor(0X66FF0000);
            circleOptions.InvokeStrokeWidth(0);

            NativeMap.AddCircle(circleOptions);
        }
예제 #5
0
        /// <summary>
        /// Adds a bubble that reflects the expiry range of a helicopter carrying organ
        /// </summary>
        /// <param name="heliPin"></param>
        private void addOrganRange(CustomPin heliPin)
        {
            var circleOptions = new CircleOptions();

            circleOptions.InvokeCenter(new LatLng(heliPin.Position.Latitude, heliPin.Position.Longitude));

            // TODO adjust to organ countdown
            circleOptions.InvokeRadius(40000);

            circleOptions.InvokeFillColor(0X660000FF);
            circleOptions.InvokeStrokeColor(0X660000FF);
            circleOptions.InvokeStrokeWidth(0);

            highlightedOrganRange = new Tuple <CustomPin, Circle>(heliPin, NativeMap.AddCircle(circleOptions));
        }
예제 #6
0
        /// <summary>
        /// Minulí pozice zůstávají na mapě
        /// </summary>
        private void DrawDebugPosition()
        {
            if (debugPositionCircle != null)
            {
                debugPositionCircle.Dispose();
            }
            debugPositionCircle = new CircleOptions();
            debugPositionCircle.InvokeCenter(new LatLng(customMap.DebugPosition.Latitude, customMap.DebugPosition.Longitude));
            debugPositionCircle.InvokeRadius(50);
            debugPositionCircle.InvokeFillColor(0X66FF0000);
            debugPositionCircle.InvokeStrokeColor(0X66FF0000);
            debugPositionCircle.InvokeStrokeWidth(0);


            NativeMap.AddCircle(debugPositionCircle);
        }
예제 #7
0
        protected override NativeCircle CreateNativeItem(Circle outerItem)
        {
            var opts = new CircleOptions();

            opts.InvokeCenter(new LatLng(outerItem.Center.Latitude, outerItem.Center.Longitude));
            opts.InvokeRadius(outerItem.Radius.Meters);
            opts.InvokeStrokeWidth(outerItem.StrokeWidth * this.ScaledDensity); // TODO: convert from px to pt. Is this collect? (looks like same iOS Maps)
            opts.InvokeStrokeColor(outerItem.StrokeColor.ToAndroid());
            opts.InvokeFillColor(outerItem.FillColor.ToAndroid());
            opts.Clickable(outerItem.IsClickable);

            var nativeCircle = NativeMap.AddCircle(opts);

            // associate pin with marker for later lookup in event handlers
            outerItem.NativeObject = nativeCircle;
            return(nativeCircle);
        }
예제 #8
0
        protected override MarkerOptions CreateMarker(Pin pin)
        {
            CustomPin customPin = (CustomPin)pin;

            var marker = new MarkerOptions();

            marker.SetPosition(new LatLng(pin.Position.Latitude, pin.Position.Longitude));
            marker.SetAlpha(0);

            var circleOptions = new CircleOptions();

            circleOptions.InvokeCenter(new LatLng(customPin.Position.Latitude, customPin.Position.Longitude));
            circleOptions.InvokeRadius(1000);
            circleOptions.InvokeStrokeWidth(0);

            switch (customPin.Status)
            {
            case StatusEnum.Diagnosed:
                circleOptions.InvokeFillColor(0X66FF0000);
                circleOptions.InvokeStrokeColor(0X66FF0000);
                NativeMap.AddCircle(circleOptions);
                break;

            case StatusEnum.Healthy:
                break;

            case StatusEnum.Recovered:
                break;

            case StatusEnum.Symptomatic:
                circleOptions.InvokeFillColor(0X33FF4D26);
                circleOptions.InvokeStrokeColor(0X33FF4D26);
                NativeMap.AddCircle(circleOptions);
                break;

            default:
                break;
            }

/*            circleOptions.InvokeFillColor(0X66FF0000);
 *          circleOptions.InvokeStrokeColor(0X66FF0000);*/



            return(marker);
        }
        protected override void OnElementPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            base.OnElementPropertyChanged(sender, e);

            if (e.PropertyName.Equals("VisibleRegion") && !isDrawn)
            {
                var circleOptions = new CircleOptions();
                circleOptions.InvokeCenter(new LatLng(circle.Position.Latitude, circle.Position.Longitude));
                circleOptions.InvokeRadius(circle.Radius);
                circleOptions.InvokeFillColor(0X66FF0000);
                circleOptions.InvokeStrokeColor(0X66FF0000);
                circleOptions.InvokeStrokeWidth(0);

                NativeMap.AddCircle(circleOptions);
                isDrawn = true;
            }
        }
        private void UpdateCircles()
        {
            circles?.ForEach(x => x.Remove());

            circles = new List <Circle>();

            customPins?.ForEach(x => {
                var circleOptions = new CircleOptions();
                circleOptions.InvokeCenter(new LatLng(x.Position.Latitude, x.Position.Longitude));
                circleOptions.InvokeRadius(x.Radius);
                circleOptions.InvokeFillColor(0X66FF0000);
                circleOptions.InvokeStrokeColor(0X66FF0000);
                circleOptions.InvokeStrokeWidth(0);

                circles.Add(NativeMap.AddCircle(circleOptions));
            });
        }
예제 #11
0
        public async void PlotPositions()
        {
            _positions = new List <Position>();

            for (int i = 0; i <= _posts.Count - 1; i++)
            {
                Position pos = new Position();
                pos = await GetPosition(_posts[i].Address);

                var lat = pos.Latitude;
                var lng = pos.Longitude;
                _positions.Add(pos);
            }



            _pins = new List <Pin>();

            for (int x = 0; x < _positions.Count - 1; x++)
            {
                Pin pin = new Pin
                {
                    Label    = "[incident]",
                    Address  = "[incident description]",
                    Type     = PinType.Place,
                    Position = _positions[x]
                };
                _pins.Add(pin);


                NativeMap.AddCircle(
                    new CircleOptions().InvokeCenter(new LatLng(_positions[x].Latitude, _positions[x].Longitude))
                    .InvokeRadius(50)
                    .InvokeStrokeColor(845249)
                    .InvokeFillColor(214682)
                    );
            }

            for (int p = 0; p < _pins.Count - 1; p++)
            {
                //NativeMap.Pins.Add(_pins[p]);
            }
        }
예제 #12
0
        private void DrawGrid()
        {
            System.Diagnostics.Debug.Write("@@@@@ DrawGrid");

            customMap.GenerateGrid();

            if (customMap.GridLines == null)
            {
                return;
            }

            //smaže vše na mapě
            NativeMap.Clear();

            RedrawLoggedPositions();
            //drawnPositionsIndices.Clear();

            foreach (GridLine line in customMap.GridLines)
            {
                PolylineOptions lineOptions = GetLine();

                lineOptions.Add(new LatLng(line.start.Latitude, line.start.Longitude));
                lineOptions.Add(new LatLng(line.end.Latitude, line.end.Longitude));

                NativeMap.AddPolyline(lineOptions);
            }

            CircleOptions gridCenterCircle = new CircleOptions();

            gridCenterCircle.InvokeCenter(new LatLng(customMap.activeLocation.Center.Latitude, customMap.activeLocation.Center.Longitude));
            gridCenterCircle.InvokeRadius(50);
            gridCenterCircle.InvokeFillColor(Android.Graphics.Color.DarkSlateBlue);
            gridCenterCircle.InvokeStrokeColor(0X66FF0000);
            gridCenterCircle.InvokeStrokeWidth(2);

            NativeMap.AddCircle(gridCenterCircle);
        }
예제 #13
0
        protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            base.OnElementPropertyChanged(sender, e);

            if (e.PropertyName == CustomMap.PointsProperty.PropertyName)
            {
                if (NativeMap == null)
                {
                    return;
                }

                var customMap = (CustomMap)Element;
                foreach (var point in customMap.Points)
                {
                    var options = new CircleOptions();
                    options.InvokeStrokeWidth(0)
                    .InvokeFillColor(point.Heat.ToAndroid())
                    .InvokeRadius(200d)
                    .InvokeCenter(new LatLng(point.Location.Latitude, point.Location.Longitude));

                    NativeMap.AddCircle(options);
                }
            }
        }
예제 #14
0
        protected override void OnMapReady(GoogleMap map)
        {
            base.OnMapReady(map);

            client = new HttpClient();
            client.MaxResponseContentBufferSize = 256000;

            // add blue positions
            blueCoordinates.Add(new Position(33.771282, -84.392072));
            blueCoordinates.Add(new Position(33.776892, -84.392088));
            blueCoordinates.Add(new Position(33.776961, -84.395176));
            blueCoordinates.Add(new Position(33.778180, -84.396451));
            blueCoordinates.Add(new Position(33.778413, -84.401306));
            blueCoordinates.Add(new Position(33.778007, -84.401955));
            blueCoordinates.Add(new Position(33.777316, -84.402397));// 6th and ferst
            blueCoordinates.Add(new Position(33.777295, -84.404166));
            blueCoordinates.Add(new Position(33.778676, -84.404192));
            blueCoordinates.Add(new Position(33.778696, -84.406125));
            blueCoordinates.Add(new Position(33.779625, -84.406100));
            blueCoordinates.Add(new Position(33.779638, -84.402478));
            blueCoordinates.Add(new Position(33.778390, -84.401328));
            blueCoordinates.Add(new Position(33.777987, -84.401987));
            blueCoordinates.Add(new Position(33.777316, -84.402397));

            blueCoordinates.Add(new Position(33.774930, -84.402623));
            blueCoordinates.Add(new Position(33.774375, -84.402450));
            blueCoordinates.Add(new Position(33.773929, -84.402063));
            blueCoordinates.Add(new Position(33.773688, -84.401366));
            blueCoordinates.Add(new Position(33.773141, -84.397929));
            blueCoordinates.Add(new Position(33.772972, -84.397483));
            blueCoordinates.Add(new Position(33.772405, -84.396655));
            blueCoordinates.Add(new Position(33.772355, -84.395508));
            blueCoordinates.Add(new Position(33.771389, -84.395540));
            blueCoordinates.Add(new Position(33.771384, -84.396136));
            blueCoordinates.Add(new Position(33.768869, -84.396118));
            blueCoordinates.Add(new Position(33.768857, -84.394114));
            blueCoordinates.Add(new Position(33.768688, -84.393522));
            blueCoordinates.Add(new Position(33.768873, -84.392757));
            blueCoordinates.Add(new Position(33.768914, -84.392129));
            blueCoordinates.Add(new Position(33.769955, -84.392100));
            blueCoordinates.Add(new Position(33.769956, -84.391723));
            blueCoordinates.Add(new Position(33.770022, -84.391630));
            blueCoordinates.Add(new Position(33.770132, -84.391643));
            blueCoordinates.Add(new Position(33.770169, -84.392123));
            blueCoordinates.Add(new Position(33.771282, -84.392072));

            // add red positions
            redCoordinates.Add(new Position(33.771282, -84.392072));
            redCoordinates.Add(new Position(33.776892, -84.392088));
            redCoordinates.Add(new Position(33.776961, -84.395176));
            redCoordinates.Add(new Position(33.778180, -84.396451));
            redCoordinates.Add(new Position(33.778413, -84.401306));
            redCoordinates.Add(new Position(33.779669, -84.402527));
            redCoordinates.Add(new Position(33.779638, -84.406084));
            redCoordinates.Add(new Position(33.778707, -84.406125));
            redCoordinates.Add(new Position(33.778673, -84.404191));
            redCoordinates.Add(new Position(33.777309, -84.404225));
            redCoordinates.Add(new Position(33.777316, -84.402397));// 6th and ferst
            redCoordinates.Add(new Position(33.775246, -84.402564));
            redCoordinates.Add(new Position(33.774685, -84.402288));
            redCoordinates.Add(new Position(33.774595, -84.402528));
            redCoordinates.Add(new Position(33.774375, -84.402450));
            redCoordinates.Add(new Position(33.773929, -84.402063));
            redCoordinates.Add(new Position(33.773688, -84.401366));
            redCoordinates.Add(new Position(33.773141, -84.397929));
            redCoordinates.Add(new Position(33.772972, -84.397483));
            redCoordinates.Add(new Position(33.772405, -84.396655));
            redCoordinates.Add(new Position(33.772355, -84.395508));
            redCoordinates.Add(new Position(33.771389, -84.395540));
            redCoordinates.Add(new Position(33.771307, -84.392058));
            redCoordinates.Add(new Position(33.770163, -84.392197));
            redCoordinates.Add(new Position(33.770164, -84.391692));
            redCoordinates.Add(new Position(33.770104, -84.391631));
            redCoordinates.Add(new Position(33.769981, -84.391650));
            redCoordinates.Add(new Position(33.769950, -84.391740));
            redCoordinates.Add(new Position(33.769961, -84.392126));
            redCoordinates.Add(new Position(33.771282, -84.392072));

            // add green positions
            greenCoordinates.Add(new Position(33.773033, -84.397003));
            greenCoordinates.Add(new Position(33.773283, -84.397038));
            greenCoordinates.Add(new Position(33.773312, -84.397156));
            greenCoordinates.Add(new Position(33.773261, -84.397245));
            greenCoordinates.Add(new Position(33.773154, -84.397244));
            greenCoordinates.Add(new Position(33.773035, -84.397152));
            greenCoordinates.Add(new Position(33.772973, -84.397050));
            greenCoordinates.Add(new Position(33.772814, -84.397200));
            greenCoordinates.Add(new Position(33.773175, -84.397883));
            greenCoordinates.Add(new Position(33.773730, -84.401258));
            greenCoordinates.Add(new Position(33.774334, -84.402381));
            greenCoordinates.Add(new Position(33.774581, -84.402502));
            greenCoordinates.Add(new Position(33.774689, -84.402284));
            greenCoordinates.Add(new Position(33.775154, -84.402428));
            greenCoordinates.Add(new Position(33.775272, -84.402586));
            greenCoordinates.Add(new Position(33.777294, -84.402387));
            greenCoordinates.Add(new Position(33.777984, -84.401980));
            greenCoordinates.Add(new Position(33.778408, -84.401282));
            greenCoordinates.Add(new Position(33.778471, -84.400236));
            greenCoordinates.Add(new Position(33.778256, -84.399113));
            greenCoordinates.Add(new Position(33.780563, -84.399115));
            greenCoordinates.Add(new Position(33.781522, -84.399177));
            greenCoordinates.Add(new Position(33.781586, -84.404166));
            greenCoordinates.Add(new Position(33.784783, -84.406075));
            greenCoordinates.Add(new Position(33.786210, -84.406042)); // 14th st
            greenCoordinates.Add(new Position(33.786188, -84.397254));
            greenCoordinates.Add(new Position(33.786538, -84.393255));
            greenCoordinates.Add(new Position(33.786537, -84.391980));
            greenCoordinates.Add(new Position(33.781614, -84.391985));
            greenCoordinates.Add(new Position(33.781551, -84.399202));
            greenCoordinates.Add(new Position(33.778297, -84.399238));
            greenCoordinates.Add(new Position(33.778490, -84.400610));
            greenCoordinates.Add(new Position(33.778396, -84.401321));
            greenCoordinates.Add(new Position(33.777904, -84.402060));
            greenCoordinates.Add(new Position(33.777293, -84.402421));
            greenCoordinates.Add(new Position(33.774896, -84.402622));
            greenCoordinates.Add(new Position(33.774316, -84.402446));
            greenCoordinates.Add(new Position(33.773904, -84.402016));
            greenCoordinates.Add(new Position(33.773685, -84.401316));
            greenCoordinates.Add(new Position(33.773193, -84.398039));
            greenCoordinates.Add(new Position(33.772811, -84.397237));
            greenCoordinates.Add(new Position(33.772793, -84.397195));
            greenCoordinates.Add(new Position(33.773033, -84.397003));

            PolylineOptions routeOptions = new PolylineOptions(); // route tracing, default to blue for now

            routeOptions.InvokeColor(0x3f75A2FF);

            //routeOptions.InvokeColor(0x33DD1D36); // red
            //routeOptions.InvokeColor(0x6600a86b); // green
            foreach (var position in redCoordinates)
            {
                routeOptions.Add(new LatLng(position.Latitude, position.Longitude));
            }
            foreach (var position in greenCoordinates)
            {
                routeOptions.Add(new LatLng(position.Latitude, position.Longitude));
            }

            NativeMap.AddPolyline(routeOptions);

            foreach (Bus bus in BusList.busList)
            {
                CircleOptions circleOptions = new CircleOptions();
                circleOptions.InvokeCenter(new LatLng(bus.lat, bus.lng));
                circleOptions.InvokeRadius(30);
                if (bus.route == "red")
                {
                    circleOptions.InvokeFillColor(0X70F44242);
                }
                else if (bus.route == "blue")
                {
                    circleOptions.InvokeFillColor(0X704141F4);
                }
                else if (bus.route == "green")
                {
                    circleOptions.InvokeFillColor(0X7046F441);
                }
                else
                {
                    circleOptions.InvokeFillColor(0X70000000);
                }

                circleOptions.InvokeStrokeColor(0X70FFFFFF);
                circleOptions.InvokeStrokeWidth(5);


                NativeMap.AddCircle(circleOptions);
            }
        }