private void showUserMap()
        {
            map.MapType           = MKMapType.HybridFlyover;
            map.ShowsUserLocation = true;
            map.ZoomEnabled       = true;
            map.ScrollEnabled     = true;
            map.ShowsBuildings    = true;
            map.PitchEnabled      = true;
            map.ShowsCompass      = false;
            double lat = 30.2652233534254;
            double lon = -97.73815460962083;
            CLLocationCoordinate2D mapCenter = new CLLocationCoordinate2D(lat, lon);
            CLLocationCoordinate2D viewPoint = new CLLocationCoordinate2D(lat + 0.0050, lon - 0.0072);
            MKCoordinateRegion     mapRegion = MKCoordinateRegion.FromDistance(mapCenter, 1500, 1500);

            map.CenterCoordinate = mapCenter;
            map.Region           = mapRegion;
            var camera = MKMapCamera.CameraLookingAtCenterCoordinate(mapCenter, viewPoint, 500);

            map.Camera   = camera;
            mapDelegate  = new MapDelegate();
            map.Delegate = mapDelegate;
            askUserPermissions();

            var tapRecogniser     = new UITapGestureRecognizer(this, new Selector("MapTapSelector:"));
            var longTapRecogniser = new UILongPressGestureRecognizer(this, new Selector("MapLongTapSelector:"));

            map.AddGestureRecognizer(tapRecogniser);
            map.AddGestureRecognizer(longTapRecogniser);
            var hotelOverlay = MKCircle.Circle(mapCenter, 1000);

            map.AddOverlay(hotelOverlay);
        }
Exemple #2
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            Title = "Pyramids of Giza";

            mapView = new MKMapView(View.Bounds);
            mapView.AutoresizingMask = UIViewAutoresizing.FlexibleDimensions;
            View.AddSubview(mapView);

            var coords = new CLLocationCoordinate2D(29.976111, 31.132778);             // pyramids of giza, egypt
            var span   = new MKCoordinateSpan(MilesToLatitudeDegrees(.75), MilesToLongitudeDegrees(.75, coords.Latitude));

            // set the coords and zoom on the map
            mapView.MapType = MKMapType.Satellite;
            mapView.Region  = new MKCoordinateRegion(coords, span);

            mapView.OverlayRenderer = (m, o) => {
                if (circleRenderer == null)
                {
                    circleRenderer           = new MKCircleRenderer(o as MKCircle);
                    circleRenderer.FillColor = UIColor.Purple;
                    circleRenderer.Alpha     = 0.5f;
                }
                return(circleRenderer);
            };

            circleOverlay = MKCircle.Circle(coords, 400);
            mapView.AddOverlay(circleOverlay);

            #region Not related to this sample
            int typesWidth = 260, typesHeight = 30, distanceFromBottom = 60;
            mapTypes = new UISegmentedControl(new CGRect((View.Bounds.Width - typesWidth) / 2, View.Bounds.Height - distanceFromBottom, typesWidth, typesHeight));
            mapTypes.BackgroundColor    = UIColor.White;
            mapTypes.Layer.CornerRadius = 5;
            mapTypes.ClipsToBounds      = true;
            mapTypes.InsertSegment("Road", 0, false);
            mapTypes.InsertSegment("Satellite", 1, false);
            mapTypes.InsertSegment("Hybrid", 2, false);
            mapTypes.SelectedSegment  = 1;            // Road is the default
            mapTypes.AutoresizingMask = UIViewAutoresizing.FlexibleTopMargin;
            mapTypes.ValueChanged    += (s, e) => {
                switch (mapTypes.SelectedSegment)
                {
                case 0:
                    mapView.MapType = MKMapType.Standard;
                    break;

                case 1:
                    mapView.MapType = MKMapType.Satellite;
                    break;

                case 2:
                    mapView.MapType = MKMapType.Hybrid;
                    break;
                }
            };
            View.AddSubview(mapTypes);
            #endregion
        }
        public void AddOverlays()
        {
            // sample coordinates
            CLLocationCoordinate2D c1 = new CLLocationCoordinate2D(41.86337816, -72.56874647);
            CLLocationCoordinate2D c2 = new CLLocationCoordinate2D(41.96337816, -72.96874647);
            CLLocationCoordinate2D c3 = new CLLocationCoordinate2D(41.45537816, -72.76874647);
            CLLocationCoordinate2D c4 = new CLLocationCoordinate2D(42.34994, -71.09292);

            // circle
            MKCircle circle = MKCircle.Circle(c1, 10000.0);  // 10000 meter radius

            map.AddOverlay(circle);

            // polygon
            MKPolygon polygon = MKPolygon.FromCoordinates(new CLLocationCoordinate2D[] { c1, c2, c3 });

            map.AddOverlay(polygon);

            // triangle
            MKPolyline polyline = MKPolyline.FromCoordinates(new CLLocationCoordinate2D[] { c1, c2, c3 });

            map.AddOverlay(polyline);

            CustomOverlay co = new CustomOverlay(c4);

            map.AddOverlay(co);
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            // change map type and show user location
            map.MapType           = MKMapType.Hybrid;
            map.ShowsUserLocation = true;

            // set map center and region
            double lat       = 42.374260;
            double lon       = -71.120824;
            var    mapCenter = new CLLocationCoordinate2D(lat, lon);
            var    mapRegion = MKCoordinateRegion.FromDistance(mapCenter, 2000, 2000);

            map.CenterCoordinate = mapCenter;
            map.Region           = mapRegion;

            // add an annotation
            map.AddAnnotation(new MKPointAnnotation()
            {
                Title = "MyAnnotation", Coordinate = new CLLocationCoordinate2D(42.364260, -71.120824)
            });

            // set the map delegate
            mapDel       = new MyMapDelegate();
            map.Delegate = mapDel;

            // add a custom annotation
            map.AddAnnotation(new MonkeyAnnotation("Xamarin", mapCenter));

            // add an overlay
            var circleOverlay = MKCircle.Circle(mapCenter, 1000);

            map.AddOverlay(circleOverlay);
        }
Exemple #5
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            locationManager.RequestWhenInUseAuthorization();

            // set map type and show user location
            map.MapType           = MKMapType.Standard;
            map.ShowsUserLocation = true;

            map.Bounds = View.Bounds;

            // set map center and region
            const double lat       = 42.374260;
            const double lon       = -71.120824;
            var          mapCenter = new CLLocationCoordinate2D(lat, lon);
            var          mapRegion = MKCoordinateRegion.FromDistance(mapCenter, 2000, 2000);

            //map.CenterCoordinate = mapCenter;
            //map.Region = mapRegion;

            // add an annotation
            map.AddAnnotation(new MKPointAnnotation {
                Title      = "MyAnnotation",
                Coordinate = new CLLocationCoordinate2D(42.364260, -71.120824)
            });

            // set the map delegate
            mapDel       = new MyMapDelegate();
            map.Delegate = mapDel;

            // add a custom annotation
            map.AddAnnotation(new MonkeyAnnotation("Xamarin", mapCenter));

            // add an overlay
            var circleOverlay = MKCircle.Circle(mapCenter, 1000);

            map.AddOverlay(circleOverlay);

            var searchResultsController = new SearchResultsViewController(map);


            var searchUpdater = new SearchResultsUpdator();

            searchUpdater.UpdateSearchResults += searchResultsController.Search;

            //add the search controller
            searchController = new UISearchController(searchResultsController)
            {
                SearchResultsUpdater = searchUpdater
            };

            searchController.SearchBar.SizeToFit();
            searchController.SearchBar.SearchBarStyle = UISearchBarStyle.Minimal;
            searchController.SearchBar.Placeholder    = "Enter a search query";

            searchController.HidesNavigationBarDuringPresentation = false;
            NavigationItem.TitleView   = searchController.SearchBar;
            DefinesPresentationContext = true;
        }
        protected override void OnElementChanged(ElementChangedEventArgs <View> e)
        {
            base.OnElementChanged(e);

            if (e.OldElement != null)
            {
                var nativeMap = Control as MKMapView;
                if (nativeMap != null)
                {
                    nativeMap.RemoveOverlays(nativeMap.Overlays);
                    nativeMap.OverlayRenderer = null;
                    circleRenderer            = null;
                }
            }

            if (e.NewElement != null)
            {
                var formsMap  = (CustomMap2)e.NewElement;
                var nativeMap = Control as MKMapView;
                var circle    = formsMap.Circle;

                nativeMap.OverlayRenderer = GetOverlayRenderer;

                var circleOverlay = MKCircle.Circle(new CoreLocation.CLLocationCoordinate2D(circle.Position.Latitude, circle.Position.Longitude), circle.Radius);
                customPins = formsMap.CustomPins;
                nativeMap.AddOverlay(circleOverlay);
            }
        }
Exemple #7
0
        public void AddOverlay(IMapOverlay item)
        {
            if (item is ICircleOverlay)
            {
                var circle  = (ICircleOverlay)item;
                var overlay = new UnifiedCircleOverlay(MKCircle.Circle(circle.Location.ToCoordinate(), circle.Radius))
                {
                    Data = circle
                };

                _overlays.Add(overlay);
                Control.AddOverlay(overlay);
                return;
            }

            if (item is IPolylineOverlay)
            {
                var polyline    = (IPolylineOverlay)item;
                var coordinates = polyline
                                  .Select(p => new CLLocationCoordinate2D(p.Latitude, p.Longitude))
                                  .ToArray();

                var overlay = new UnifiedPolylineOverlay(MKPolyline.FromCoordinates(coordinates))
                {
                    Data = polyline
                };

                _overlays.Add(overlay);
                Control.AddOverlay(overlay);
                return;
            }
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            this.Title = "Pyramids of Giza";

            // create our location and zoom for the pyramids.
            CLLocationCoordinate2D coords = new CLLocationCoordinate2D(29.976111, 31.132778);
            MKCoordinateSpan       span   = new MKCoordinateSpan(MilesToLatitudeDegrees(.75), MilesToLongitudeDegrees(.75, coords.Latitude));

            // set the coords and zoom on the map
            this.mapMain.Region = new MKCoordinateRegion(coords, span);

            // show the sat view.
            this.mapMain.MapType = MKMapType.Satellite;

            // add an overlay with the coords
            this._circleOverlay = MKCircle.Circle(coords, 200);
            this.mapMain.AddOverlay(this._circleOverlay);

            // set our delegate.
            //this.mapMain.Delegate = new MapDelegate();

            //-- OR --
            //- override the GetVIewForOverlay directly, in which case we don't need a delegate
            this.mapMain.GetViewForOverlay += (m, o) => {
                if (this._circleView == null)
                {
                    this._circleView           = new MKCircleView(this._circleOverlay);
                    this._circleView.FillColor = UIColor.Blue;
                    this._circleView.Alpha     = 0.5f;
                }
                return(this._circleView);
            };
        }
Exemple #9
0
        void AddMapElements(IEnumerable <MapElement> mapElements)
        {
            foreach (var element in mapElements)
            {
                element.PropertyChanged += MapElementPropertyChanged;

                IMKOverlay overlay = null;
                switch (element)
                {
                case Polyline polyline:
                    overlay = MKPolyline.FromCoordinates(polyline.Geopath
                                                         .Select(position => new CLLocationCoordinate2D(position.Latitude, position.Longitude))
                                                         .ToArray());
                    break;

                case Polygon polygon:
                    overlay = MKPolygon.FromCoordinates(polygon.Geopath
                                                        .Select(position => new CLLocationCoordinate2D(position.Latitude, position.Longitude))
                                                        .ToArray());
                    break;

                case Circle circle:
                    overlay = MKCircle.Circle(
                        new CLLocationCoordinate2D(circle.Center.Latitude, circle.Center.Longitude),
                        circle.Radius.Meters);
                    break;
                }

                element.MapElementId = overlay;

                ((MKMapView)Control).AddOverlay(overlay);
            }
        }
        void didTapSaveButton(UIBarButtonItem sender)
        {
            double     circleDegreeDelta;
            CLLocation pointOnCircle;

            var span = MapView.Region.Span;

            if (span.LatitudeDelta > span.LongitudeDelta)
            {
                circleDegreeDelta = span.LongitudeDelta / MapRegionFraction;
                pointOnCircle     = new CLLocation(MapView.Region.Center.Latitude, MapView.Region.Center.Longitude - circleDegreeDelta);
            }
            else
            {
                circleDegreeDelta = span.LatitudeDelta / MapRegionFraction;
                pointOnCircle     = new CLLocation(MapView.Region.Center.Latitude - circleDegreeDelta, MapView.Region.Center.Longitude);
            }

            var mapCenterLocation = new CLLocation(MapView.Region.Center.Latitude, MapView.Region.Center.Longitude);
            var distance          = pointOnCircle.DistanceFrom(mapCenterLocation);
            var genericRegion     = new CLCircularRegion(MapView.Region.Center, distance, CircularRegion);

            circleOverlay = MKCircle.Circle(genericRegion.Center, genericRegion.Radius);
            var vcDelegate = Delegate;

            if (vcDelegate != null)
            {
                vcDelegate.MapViewDidUpdateRegion(genericRegion);
            }
            DismissViewController(true, null);
        }
        private void DropGeofenceCircle(PointF point)
        {
            CLLocationCoordinate2D convertedPoint = this.mapView.ConvertPoint(point, this.mapView);
            String pinTitle       = String.Format("Centre of geofence.");
            String subCoordinates = String.Format("{0},{1}", convertedPoint.Latitude.ToString(), convertedPoint.Longitude.ToString());

            if (this.droppedPin != null)
            {
                this.mapView.RemoveAnnotation(this.droppedPin);
            }

            this.droppedPin = new SimpleAnnotation(convertedPoint, pinTitle, subCoordinates);
            this.mapView.AddAnnotation(droppedPin);


            if (this.GeofenceMapDelegate.Circle != null)
            {
                this.mapView.RemoveOverlay(this.GeofenceMapDelegate.Circle);
            }

            this.GeofenceMapDelegate.Circle = MKCircle.Circle(convertedPoint, this.GeofenceService.RadiusOfGeofenceInMeters);
            this.mapView.AddOverlay(this.GeofenceMapDelegate.Circle);

            if (!this.mapView.VisibleMapRect.Contains(this.GeofenceMapDelegate.Circle.BoundingMap))
            {
                this.mapView.SetRegion(MKCoordinateRegion.FromMapRect(this.GeofenceMapDelegate.Circle.BoundingMap), true);
            }
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            locationManager.RequestWhenInUseAuthorization();

            // set map center and region
            const double lat       = 42.374260;
            const double lon       = -71.120824;
            var          mapCenter = new CLLocationCoordinate2D(lat, lon);
            var          mapRegion = MKCoordinateRegion.FromDistance(mapCenter, 2000, 2000);

            map.CenterCoordinate = mapCenter;
            map.Region           = mapRegion;

            // add an annotation
            map.AddAnnotation(new MKPointAnnotation
            {
                Title      = "MyAnnotation",
                Coordinate = new CLLocationCoordinate2D(42.364260, -71.120824)
            });

            // set the map delegate
            mapViewDelegate = new MapViewDelegate();
            map.Delegate    = mapViewDelegate;

            // add a custom annotation
            map.AddAnnotation(new MonkeyAnnotation("Xamarin", mapCenter));

            // add an overlay
            map.AddOverlay(MKCircle.Circle(mapCenter, 1000));

            // add search
            var searchResultsController = new SearchResultsViewController(map);

            var searchUpdater = new SearchResultsUpdator();

            searchUpdater.UpdateSearchResults += searchResultsController.UpdateSearchResults;

            // add the search controller
            searchController = new UISearchController(searchResultsController);
            searchController.SearchResultsUpdater = searchUpdater;

            searchController.SearchBar.SizeToFit();
            searchController.SearchBar.SearchBarStyle = UISearchBarStyle.Minimal;
            searchController.SearchBar.Placeholder    = "Enter a search query";

            searchController.HidesNavigationBarDuringPresentation = false;
            NavigationItem.TitleView   = searchController.SearchBar;
            DefinesPresentationContext = true;


            //adresse in koordinaten umwandeln
            getCoordinates("Chennai International Airport");
            mapCenter            = newLocation;
            map.CenterCoordinate = mapCenter;

            getAdress();
        }
        void AnnotateAndZoomToRegion(CLCircularRegion region)
        {
            circleOverlay = MKCircle.Circle(region.Center, region.Radius);
            const double multiplier = MapRegionFraction;
            var          mapRegion  = MKCoordinateRegion.FromDistance(region.Center, region.Radius * multiplier, region.Radius * multiplier);

            MapView.SetRegion(mapRegion, false);
        }
Exemple #14
0
 public void OnChange(object o, PropertyChangedEventArgs ar)
 {
     Device.BeginInvokeOnMainThread(() => {
         var pos       = mapWithRoute.CurrentPosition;
         var cords     = new CLLocationCoordinate2D(pos.Lat, pos.Lon);
         circleOverlay = MKCircle.Circle(cords, 20);
         nativeMap.AddOverlay(circleOverlay);
     });
 }
Exemple #15
0
        protected override void OnElementChanged(ElementChangedEventArgs <View> e)
        {
            base.OnElementChanged(e);
            if (isLoaded)
            {
                nativeMap.RemoveOverlays(nativeMap.Overlays);
            }

            if (e.NewElement == null)
            {
                return;
            }
            if (e.OldElement != null)
            {
                nativeMap = Control as MKMapView;
            }
            element            = Element as ExtendedMap;
            mapDelegate        = new MapDelegate();
            nativeMap          = Control as MKMapView;
            nativeMap.Delegate = null;
            nativeMap.Delegate = mapDelegate;

            var formsMap = (ExtendedMap)e.NewElement;

            CLLocationCoordinate2D[] coords = new CLLocationCoordinate2D[element.RouteCoordinates.Count];

            int    index     = 0;
            int    idCounter = 1;
            string icon      = "";

            icon = element.ImageSource;
            foreach (var circle in element.Circles)
            {
                var annot = new CustomAnnotation(new CLLocationCoordinate2D(circle.Position.Latitude, circle.Position.Longitude), element.CustomPins.FirstOrDefault().Label, "", false, icon);
                annot.Id = idCounter++;
                nativeMap.AddAnnotation(annot);
                //pinCollection.Add(annot.Id, item);
                annotations.Add(annot);
                var circleOverlay = MKCircle.Circle(new CLLocationCoordinate2D(circle.Position.Latitude, circle.Position.Longitude), circle.Radius);
                nativeMap.AddOverlay(circleOverlay);
            }

            foreach (var position in element.RouteCoordinates)
            {
                var annot = new CustomAnnotation(new CLLocationCoordinate2D(position.Latitude, position.Longitude), element.CustomPins.FirstOrDefault().Label, "", false, icon);
                annot.Id = idCounter++;
                nativeMap.AddAnnotation(annot);
                //pinCollection.Add(annot.Id, item);
                annotations.Add(annot);
                coords[index] = new CLLocationCoordinate2D(position.Latitude, position.Longitude);
                index++;
            }
            var routeOverlay = MKPolyline.FromCoordinates(coords);

            nativeMap.AddOverlay(routeOverlay);
        }
Exemple #16
0
        public override void Refresh(ChallengeResponseModel challengeResponse)
        {
            Crashlytics.Instance.Log("ChallengeDetailViewController_Refresh()");
            base.Refresh(challengeResponse);

            if (challengeResponse == null)
            {
                return;
            }

            Challenge             = challengeResponse.Challenge;
            TimeText.Text         = Challenge.NextEventCountDown;
            PointsText.Text       = "+" + Challenge.PointValue.ToString() + " pts";
            ChallengeTextLbl.Text = Challenge.Name;

            var navigationDelegate = new ChallengeDetailWebViewNavigationDelegate();

            navigationDelegate.NavigationFinished += SetupConstraint;
            this.WebView.NavigationDelegate        = navigationDelegate;
            WebView.LoadHtmlString(Challenge.Desc, null);
            ImageService.Instance.LoadUrl(Challenge.Image).Into(ChallengeImage);

            if (!DidSetupMap && Challenge.LocationLat != null && Challenge.LocationLong != null)
            {
                ChallengeImage.Hidden = true;
                vImagePlaceholder.RemoveConstraint(cnImagePlaceholderAspect);
                vImagePlaceholder.AddConstraint(cnImagePlaceholderAspect = NSLayoutConstraint.Create(vImagePlaceholder, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1, 0));

                double radius = Challenge.RadiusMeters ?? 100.0;
                if (radius > 6000000)
                {
                    radius = 6000000;
                }
                double mapRegion = radius * 2.5;

                CLLocationCoordinate2D mapCoordinate = new CLLocationCoordinate2D(Challenge.LocationLat.Value, Challenge.LocationLong.Value);
                MapViewBase.SetRegion(MKCoordinateRegion.FromDistance(mapCoordinate, mapRegion, mapRegion), true);

                MKCircle circle = MKCircle.Circle(mapCoordinate, radius);
                MapViewBase.AddOverlay(circle);

                MKPointAnnotation annotation = new MKPointAnnotation();
                annotation.Coordinate = new CLLocationCoordinate2D(Challenge.LocationLat.Value, Challenge.LocationLong.Value);
                MapViewBase.AddAnnotation(annotation);

                DidSetupMap = true;
            }
            else
            {
                MapViewBase.Hidden = true;
                paddingMap.RemoveConstraint(cnMapPlaceholderAspect);
                paddingMap.AddConstraint(cnMapPlaceholderAspect = NSLayoutConstraint.Create(paddingMap, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1, 0));
            }

            CheckStatus();
        }
Exemple #17
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            // Perform any additional setup after loading the view, typically from a nib.

            // add the map view
            var map = new MKMapView(UIScreen.MainScreen.Bounds);

            View.Add(map);

            // change the map style
            map.MapType = MKMapType.Standard;

            // enable/disable interactions
            // map.ZoomEnabled = false;
            // map.ScrollEnabled = false;

            // show user location
            if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
            {
                locationManager.RequestWhenInUseAuthorization();
            }
            map.ShowsUserLocation = true;

            // specify a custom map delegate
            var mapDelegate = new MyMapDelegate();

            map.Delegate = mapDelegate;

            // add a point annotation
            map.AddAnnotation(new MKPointAnnotation()
            {
                Title      = "MyAnnotation",
                Coordinate = new CLLocationCoordinate2D(42.364260, -71.120824)
            });

            // add a custom annotation
            // map.AddAnnotation(new CustomAnnotation("CustomSpot", new CLLocationCoordinate2D(38.364260, -68.120824)));

            // TODO: Step 4a - draw a circle overlay
            var circleOverlay = MKCircle.Circle(new CLLocationCoordinate2D(33.755, -84.39), 100 * 1609.34); // 1609.34 = meters in a mile

            map.AddOverlay(circleOverlay);

            // TODO: Step 4b - draw a polygon (Wyoming)
            var stateOverlay = MKPolygon.FromCoordinates(new CLLocationCoordinate2D[]
            {
                new CLLocationCoordinate2D(45.00, -111.00),
                new CLLocationCoordinate2D(45, -104),
                new CLLocationCoordinate2D(41, -104),
                new CLLocationCoordinate2D(41, -111)
            });

            map.AddOverlay(stateOverlay);
        }
Exemple #18
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)
        {
            //TODO Add proper radius
            var circleOptions = MKCircle.Circle(
                new CoreLocation.CLLocationCoordinate2D(heliPin.Position.Latitude, heliPin.Position.Longitude), 40000);

            nativeMap.AddOverlay(circleOptions);

            highlightedOrganRange = new Tuple <CustomPin, MKCircle>(heliPin, circleOptions);
        }
Exemple #19
0
        public void CtorOverlay()
        {
            TestRuntime.AssertXcodeVersion(5, 0, 1);

            var loc = new CLLocationCoordinate2D(40, 70);

            using (var overlay = MKCircle.Circle(loc, 2000))
                using (var opr = new MKOverlayPathRenderer(overlay)) {
                    Assert.Null(opr.Path, "Path");
                }
        }
Exemple #20
0
        protected override void OnElementChanged(ElementChangedEventArgs <View> e)
        {
            base.OnElementChanged(e);

            if (e.OldElement != null)
            {
                var nativeMap = Control as MKMapView;
                nativeMap.GetViewForAnnotation           = null;
                nativeMap.OverlayRenderer                = null;
                nativeMap.CalloutAccessoryControlTapped -= OnCalloutAccessoryControlTapped;
                nativeMap.DidSelectAnnotationView       -= OnDidSelectAnnotationView;
                nativeMap.DidDeselectAnnotationView     -= OnDidDeselectAnnotationView;
            }

            if (e.NewElement != null)
            {
                formsMap  = (LocationMap)e.NewElement;
                nativeMap = Control as MKMapView;

                var circle = formsMap.Circle;
                nativeMap.OverlayRenderer = GetOverlayRenderer;


                if (circle.Position.Latitude != 0.0)
                {
                    _circle = MKCircle.Circle(new CoreLocation.CLLocationCoordinate2D(circle.Position.Latitude, circle.Position.Longitude), circle.Radius);
                    nativeMap.AddOverlay(_circle);
                }

                /* Listen for circle change events */
                MessagingCenter.Subscribe <CustomCircle>(this, "CircleChanged", (obj) =>
                {
                    if (_circle == null)
                    {
                        _circle = MKCircle.Circle(new CoreLocation.CLLocationCoordinate2D(obj.Position.Latitude, obj.Position.Longitude), obj.Radius);
                        nativeMap.AddOverlay(_circle);
                    }
                    else
                    {
                        nativeMap.RemoveOverlay(_circle);
                        _circle.Dispose();
                        _circle = MKCircle.Circle(new CoreLocation.CLLocationCoordinate2D(obj.Position.Latitude, obj.Position.Longitude), obj.Radius);
                        nativeMap.AddOverlay(_circle);
                    }
                });

                nativeMap.GetViewForAnnotation           = GetViewForAnnotation;
                nativeMap.CalloutAccessoryControlTapped += OnCalloutAccessoryControlTapped;
                nativeMap.DidSelectAnnotationView       += OnDidSelectAnnotationView;
                nativeMap.DidDeselectAnnotationView     += OnDidDeselectAnnotationView;
            }
        }
        public void CtorOverlay()
        {
            if (!TestRuntime.CheckSystemAndSDKVersion(7, 0))
            {
                Assert.Inconclusive("Requires iOS 7.0");
            }

            var loc = new CLLocationCoordinate2D(40, 70);

            using (var overlay = MKCircle.Circle(loc, 2000))
                using (var opr = new MKOverlayPathRenderer(overlay)) {
                    Assert.Null(opr.Path, "Path");
                }
        }
Exemple #22
0
        private void AddOverlays()
        {
            var circle = MKCircle.Circle(AtlantaCoords, 100 * METERS_IN_A_MILE);

            MyMapView.AddOverlay(circle);

            var poly = MKPolygon.FromCoordinates(new CLLocationCoordinate2D[]
            {
                new CLLocationCoordinate2D(25.25, -80.27),
                new CLLocationCoordinate2D(32.14, -64.97),
                new CLLocationCoordinate2D(18.23, -66.56)
            });

            MyMapView.AddOverlay(poly);
        }
Exemple #23
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            locationManager.RequestWhenInUseAuthorization();
            // set map type and show user location
            map.MapType           = MKMapType.Standard;
            map.ShowsUserLocation = true;
            map.Bounds            = View.Bounds;
            // set map center and region
            double lat       = 42.374260;
            double lon       = -71.120824;
            var    mapCenter = new CLLocationCoordinate2D(lat, lon);
            var    mapRegion = MKCoordinateRegion.FromDistance(mapCenter, 2000, 2000);

            map.CenterCoordinate = mapCenter;
            map.Region           = mapRegion;

            // add an annotation
            map.AddAnnotation(new MKPointAnnotation()
            {
                Title      = "MyAnnotation",
                Coordinate = new CLLocationCoordinate2D(42.364260, -71.120824)
            });

            // set the map delegate
            mapDel       = new MyMapDelegate();
            map.Delegate = mapDel;

            // add a custom annotation
            map.AddAnnotation(new MonkeyAnnotation("Xamarin", mapCenter));

            // add an overlay
            var circleOverlay = MKCircle.Circle(mapCenter, 1000);

            map.AddOverlay(circleOverlay);

            // create search controller
            searchBar = new UISearchBar(new CGRect(0, 20, View.Frame.Width, 50))
            {
                Placeholder = "Enter a search query"
            };

            searchController                     = new UISearchDisplayController(searchBar, this);
            searchController.Delegate            = new SearchDelegate(map);
            searchController.SearchResultsSource = new SearchSource(searchController, map);
            View.AddSubview(searchBar);
        }
        protected void OnMapTapped(UIGestureRecognizer sender)
        {
            CLLocationCoordinate2D tappedLocationCoord = map.ConvertPoint(sender.LocationInView(map), map);

            if (annotationMode)
            {
                var annotation = new MKPointAnnotation(tappedLocationCoord, "User annotation", "");
                annotations.Add(annotation);
                map.AddAnnotation(annotation);
            }
            else
            {
                var overlay = MKCircle.Circle(tappedLocationCoord, 1000);
                map.AddOverlay(overlay);
            }
        }
        public void RefreshOrganCircleOnMap(object o)
        {
            Device.BeginInvokeOnMainThread(() =>
            {
                organTimeLeft--;

                if (organTimeLeft <= 0)
                {
                    return;
                }
                else
                {
                    double mapRadius;
                    double distanceTime = organTimeLeft * 70;

                    if (distanceTime > 500000)
                    {
                        mapRadius = 500000;
                    }
                    else
                    {
                        mapRadius = distanceTime;
                    }
                    Position currentPosition = customPin.Position;

                    map.Circle = new CustomCircle
                    {
                        Position = currentPosition,
                        Radius   = mapRadius
                    };
                    var circleOverlay = MKCircle.Circle(new CoreLocation.CLLocationCoordinate2D(map.Circle.Position.Latitude, map.Circle.Position.Longitude), map.Circle.Radius);
                    if (nativeMap.Overlays == null || nativeMap.Overlays.Length == 0)
                    {
                        return;
                    }
                    else
                    {
                        nativeMap.RemoveOverlay(nativeMap.Overlays[0]);

                        customMapRenderer.circleRenderer = null;
                        nativeMap.OverlayRenderer        = customMapRenderer.GetOverlayRenderer;

                        nativeMap.AddOverlay(circleOverlay);
                    }
                }
            });
        }
Exemple #26
0
        public bool CenterInMarker(string seekiosId
                                   , bool showAnnotation = false
                                   , bool withAnimation  = false)
        {
            var idAnnotationAsso = _annotationIdAssociation.FirstOrDefault(id => id.SeekiosId == seekiosId);

            if (idAnnotationAsso == null)
            {
                return(false);
            }
            var seekiosAnnotation = _annotations.FirstOrDefault(annotation => annotation.Id.Equals(idAnnotationAsso.MarkerId));

            if (seekiosAnnotation == null)
            {
                return(false);
            }

            var seekios = App.CurrentUserEnvironment.LsSeekios.FirstOrDefault(f => f.Idseekios.ToString() == seekiosId);

            if (seekios != null)
            {
                if (seekios.LastKnownLocation_accuracy > 0)
                {
                    var centerPostion = new CLLocationCoordinate2D(seekios.LastKnownLocation_latitude
                                                                   , seekios.LastKnownLocation_longitude);
                    var circle = MKCircle.Circle(centerPostion
                                                 , seekios.LastKnownLocation_accuracy);
                    MapViewControl.SetVisibleMapRect(circle.BoundingMapRect, new UIEdgeInsets(50, 20, 100, 20), true);
                }
                else
                {
                    CenterInLocalisation(seekios.LastKnownLocation_latitude
                                         , seekios.LastKnownLocation_longitude
                                         , (float)ZoomLevelEnum.BigZoom
                                         , withAnimation);
                }
            }

            if (showAnnotation)
            {
                SelectedAnnotation = seekiosAnnotation;
                MapViewControl.SelectAnnotation(seekiosAnnotation, withAnimation);
            }

            return(true);
        }
Exemple #27
0
        protected override void OnElementChanged(ElementChangedEventArgs <View> e)
        {
            base.OnElementChanged(e);
            if (isLoaded)
            {
                nativeMap.RemoveOverlays(nativeMap.Overlays);
            }
            if (e.OldElement != null)
            {
                nativeMap = Control as MKMapView;
                nativeMap.OverlayRenderer = null;
            }

            if (e.NewElement != null)
            {
                var formsMap = (CustomMap)e.NewElement;
                nativeMap = Control as MKMapView;
                isCircle  = formsMap.DrawCircle;
                if (!isCircle)
                {
                    nativeMap.OverlayRenderer = GetOverlayRenderer;

                    CLLocationCoordinate2D[] coords = new CLLocationCoordinate2D[formsMap.RouteCoordinates.Count];

                    int index = 0;
                    foreach (var position in formsMap.RouteCoordinates)
                    {
                        coords[index] = new CLLocationCoordinate2D(position.Latitude, position.Longitude);
                        index++;
                    }

                    var routeOverlay = MKPolyline.FromCoordinates(coords);
                    nativeMap.AddOverlay(routeOverlay);
                }
                if (isCircle)
                {
                    var circle = formsMap.Circle;
                    nativeMap.OverlayRenderer = GetOverlayRenderer;
                    var circleOverlay = MKCircle.Circle(new CoreLocation.CLLocationCoordinate2D(circle.Position.Latitude, circle.Position.Longitude), circle.Radius);
                    nativeMap.AddOverlay(circleOverlay);
                }
            }
        }
        public override void Refresh(ChallengeResponseModel challengeResponce)
        {
            base.Refresh(challengeResponce);

            if (challengeResponce == null)
            {
                return;
            }

            Challenge      = challengeResponce.Challenge;
            HeaderLbl.Text = Challenge.Name;
            //MainTextLable.Text = Challenge.Desc;
            TimeDisLbl.Text = Challenge.NextEventCountDown;

            var navigationDelegate = new ChallengeDetailWebViewNavigationDelegate();

            navigationDelegate.NavigationFinished += SetupConstraint;
            this.WebView.NavigationDelegate        = navigationDelegate;
            WebView.LoadHtmlString(Challenge.Desc, null);

            if (!DidSetupMap && Challenge.LocationLat != null && Challenge.LocationLong != null)
            {
                double radius = Challenge.RadiusMeters ?? 100.0;
                if (radius > 6000000)
                {
                    radius = 6000000;
                }
                double mapRegion = radius * 2.5;

                CLLocationCoordinate2D mapCoordinate = new CLLocationCoordinate2D(Challenge.LocationLat.Value, Challenge.LocationLong.Value);
                MapView.SetRegion(MKCoordinateRegion.FromDistance(mapCoordinate, mapRegion, mapRegion), true);

                MKCircle circle = MKCircle.Circle(mapCoordinate, radius);
                MapView.AddOverlay(circle);

                MKPointAnnotation annotation = new MKPointAnnotation();
                annotation.Coordinate = new CLLocationCoordinate2D(Challenge.LocationLat.Value, Challenge.LocationLong.Value);
                MapView.AddAnnotation(annotation);

                DidSetupMap = true;
            }
        }
Exemple #29
0
        public void Draw()
        {
            var nativeMap = Control as MKMapView;

            nativeMap.OverlayRenderer = GetOverlayRenderer;

            List <MKPolyline> polylines = new List <MKPolyline>();

            foreach (Line line in formsMap.Lines)
            {
                currentFillColor   = line.FillColor.ToUIColor();
                currentStrokeColor = line.StrokeColor.ToUIColor();

                CLLocationCoordinate2D[] cds = new CLLocationCoordinate2D[line.Positions.Count];

                int index = 0;
                foreach (var position in line.Positions)
                {
                    cds[index] = new CLLocationCoordinate2D(position.Latitude, position.Longitude);
                    index++;
                }

                MKPolyline overlay = MKPolyline.FromCoordinates(cds);
                polylines.Add(overlay);
            }

            List <MKCircle> circles = new List <MKCircle>();

            foreach (Circle circle in formsMap.Circles)
            {
                currentFillColor   = circle.FillColor.ToUIColor();
                currentStrokeColor = circle.StrokeColor.ToUIColor();
                currentLineWidth   = (nfloat)circle.LineWidth;

                MKCircle overlay = MKCircle.Circle(new CLLocationCoordinate2D(circle.Position.Latitude, circle.Position.Longitude), circle.Radius);
                circles.Add(overlay);
            }

            nativeMap.AddOverlays(polylines.ToArray());
            nativeMap.AddOverlays(circles.ToArray());
        }
Exemple #30
0
        public MKCircle CreateAccuracyArea(double latitude
                                           , double longitude
                                           , double accuracy)
        {
            if (_accuracyArea != null)
            {
                MapViewControl.RemoveOverlay(_accuracyArea);
            }
            if (accuracy <= 0)
            {
                return(null);
            }
            var centerPostion = new CLLocationCoordinate2D(latitude, longitude);
            var circle        = MKCircle.Circle(centerPostion, accuracy);

            MapViewControl.AddOverlay(circle);
            MapViewControl.SetVisibleMapRect(circle.BoundingMapRect, new UIEdgeInsets(50, 20, 100, 20), true);
            _accuracyArea = circle;

            return(_accuracyArea);
        }