Exemple #1
0
        protected override NativeGroundOverlay CreateNativeItem(GroundOverlay outerItem)
        {
            var factory          = _bitmapDescriptorFactory ?? DefaultBitmapDescriptorFactory.Instance;
            var nativeDescriptor = factory.ToNative(outerItem.Icon);

            var opts = new GroundOverlayOptions()
                       .PositionFromBounds(outerItem.Bounds.ToLatLngBounds())
                       .Clickable(outerItem.IsClickable)
                       .InvokeBearing(outerItem.Bearing)
                       .InvokeImage(nativeDescriptor)
                       .InvokeTransparency(outerItem.Transparency)
                       .InvokeZIndex(outerItem.ZIndex);

            var overlay = NativeMap.AddGroundOverlay(opts);

            // If the pin has an IconView set this method will convert it into an icon for the marker
            if (outerItem?.Icon?.Type == BitmapDescriptorType.View)
            {
                overlay.Visible = false; // Will become visible once the iconview is ready.
                TransformXamarinViewToAndroidBitmap(outerItem, overlay);
            }
            else
            {
                overlay.Visible = outerItem.IsVisible;
            }

            // associate pin with marker for later lookup in event handlers
            outerItem.NativeObject = overlay;
            return(overlay);
        }
Exemple #2
0
        private async Task HandleGroundOverlayForTile(TileInfo tileInfo)
        {
            if (SharedOverlay.IsVisible)
            {
                int       virtualTileSize = Extensions.SKMapExtensions.MercatorMapSize >> tileInfo.Zoom;
                int       xPixelsStart    = tileInfo.X * virtualTileSize;
                int       yPixelsStart    = tileInfo.Y * virtualTileSize;
                double    zoomScale       = SKMapCanvas.MapTileSize / (double)virtualTileSize;
                Rectangle mercatorSpan    = new Rectangle(xPixelsStart, yPixelsStart, virtualTileSize, virtualTileSize);
                SKMapSpan tileSpan        = mercatorSpan.ToGps();

                if (tileSpan.FastIntersects(SharedOverlay.GpsBounds))
                {
                    SKBitmap         bitmap                  = DrawTileToBitmap(tileSpan, zoomScale);
                    BitmapDescriptor bitmapDescriptor        = BitmapDescriptorFactory.FromBitmap(bitmap.ToBitmap());
                    TaskCompletionSource <object> drawingTcs = new TaskCompletionSource <object>();

                    Console.WriteLine($"Refreshing ground tile at ({tileInfo.X}, {tileInfo.Y}) for zoom level {tileInfo.Zoom} ({zoomScale}) with GPS bounds {tileSpan}");

                    Device.BeginInvokeOnMainThread(() =>
                    {
                        GroundOverlay overlay;

                        lock (_GroundOverlays)
                        {
                            overlay = _GroundOverlays.FirstOrDefault(o => (o.Tag as TileInfo)?.Equals(tileInfo) ?? false);
                        }

                        if (overlay == null)
                        {
                            GroundOverlayOptions overlayOptions = new GroundOverlayOptions().PositionFromBounds(tileSpan.ToLatLng())
                                                                  .InvokeImage(bitmapDescriptor);

                            overlay     = _NativeMap.AddGroundOverlay(overlayOptions);
                            overlay.Tag = tileInfo;

                            lock (_GroundOverlays)
                            {
                                _GroundOverlays.Add(overlay);
                            }
                        }
                        else if ((overlay.Tag as TileInfo)?.NeedsRedraw ?? false)
                        {
                            overlay.SetImage(bitmapDescriptor);
                        }

                        drawingTcs.TrySetResult(null);
                    });

                    await drawingTcs.Task.ConfigureAwait(false);

                    ReleaseOverlayBitmap(bitmap);
                }
                else
                {
                    Console.WriteLine($"Ground tile at ({tileInfo.X}, {tileInfo.Y}) for zoom level {tileInfo.Zoom} already exists");
                }
            }
        }
Exemple #3
0
        private GroundOverlay SobreporMapaComImagem(LatLng geoPosition, BitmapDescriptor bitmapDescriptor, float width, float heigth)
        {
            //LatLng NEWARK = new LatLng(-23.312847, -51.1448709);
            //BitmapDescriptorFactory.FromResource(Resource.Drawable.Icon)
            GroundOverlayOptions newarkMap = new GroundOverlayOptions()
                                             .InvokeImage(bitmapDescriptor).Position(geoPosition, width, heigth);

            return(GMap.AddGroundOverlay(newarkMap));
        }
Exemple #4
0
        public async void OnLocationChanged(Location location)
        {
            _currentLocation = location;
            if (_currentLocation != null)
            {
                bool jump = Math.Abs(_currentLocation.Latitude - lat) > 1 || Math.Abs(_currentLocation.Longitude - lon) > 1;
                lat = _currentLocation.Latitude;
                lon = _currentLocation.Longitude;

                LatLng loc = new LatLng(lat, lon);

                CameraUpdate cameraUpdate = CameraUpdateFactory.NewLatLngZoom(loc, 18);

                if (_map != null)
                {
                    if (jump)
                    {
                        _map.MoveCamera(cameraUpdate);
                    }
                    else
                    {
                        _map.AnimateCamera(cameraUpdate);
                    }
                }

                if (_myOverlay != null)
                {
                    _myOverlay.Position = loc;
                }
                else
                {
                    BitmapDescriptor     image = BitmapDescriptorFactory.FromResource(Resource.Drawable.gherkin);
                    GroundOverlayOptions groundOverlayOptions = new GroundOverlayOptions()
                                                                .Position(loc, bHeight / 4, bHeight / 4)
                                                                .InvokeImage(image);
                    _myOverlay = _map.AddGroundOverlay(groundOverlayOptions);
                }

                if (_enemyOverlay == null)
                {
                    BitmapDescriptor     image = BitmapDescriptorFactory.FromResource(Resource.Drawable.question);
                    GroundOverlayOptions groundOverlayOptions = new GroundOverlayOptions()
                                                                .Position(new LatLng(lat + 0.000001, lon + 0.000001), bHeight / 4, bHeight / 4)
                                                                .InvokeImage(image);
                    _enemyOverlay           = _map.AddGroundOverlay(groundOverlayOptions);
                    _enemyOverlay.Clickable = true;
                }
            }
        }
 private void PositionChicagoGroundOverlay(LatLng position)
 {
     if (_chicagoOverlay == null)
     {
         BitmapDescriptor     image = BitmapDescriptorFactory.FromResource(Resource.Drawable.monkey);
         GroundOverlayOptions groundOverlayOptions = new GroundOverlayOptions()
                                                     .Position(position, 150000, 200000)
                                                     .InvokeImage(image);
         _chicagoOverlay = _map.AddGroundOverlay(groundOverlayOptions);
     }
     else
     {
         _chicagoOverlay.Position = Location_Chicago;
     }
 }
Exemple #6
0
 private void PositionPolarBearGroundOverlay(LatLng position)
 {
     if (_polarBearOverlay == null)
     {
         BitmapDescriptor     image = BitmapDescriptorFactory.FromResource(Resource.Drawable.polarbear);
         GroundOverlayOptions groundOverlayOptions = new GroundOverlayOptions()
                                                     .Position(position, 150, 200)
                                                     .InvokeImage(image);
         _polarBearOverlay = _map.AddGroundOverlay(groundOverlayOptions);
     }
     else
     {
         _polarBearOverlay.Position = InMaui;
     }
 }
Exemple #7
0
        private void addDroneImage()
        {
            var currentPositionAsLatLon = new LatLng(
                mapWithRoute.CurrentPosition.Lat,
                mapWithRoute.CurrentPosition.Lon
                );

            var droneResource = customerapp.Droid.Resource.Drawable.drone;
            var image         = BitmapDescriptorFactory.FromResource(droneResource);
            var groundOverLay = new GroundOverlayOptions()
                                .Position(currentPositionAsLatLon, 16)
                                .InvokeImage(image);

            map.AddGroundOverlay(groundOverLay);
        }
        protected override NativeGroundOverlay CreateNativeItem(GroundOverlay outerItem)
        {
            var opts = new GroundOverlayOptions()
                       .PositionFromBounds(outerItem.Bounds.ToLatLngBounds())
                       .Clickable(outerItem.IsClickable)
                       .InvokeBearing(outerItem.Bearing)
                       .InvokeImage(outerItem.Icon.ToBitmapDescriptor())
                       .InvokeTransparency(outerItem.Transparency);

            var overlay = NativeMap.AddGroundOverlay(opts);

            // associate pin with marker for later lookup in event handlers
            outerItem.NativeObject = overlay;
            return(overlay);
        }
 void PositionPolarBearGroundOverlay(LatLng position)
 {
     if (polarBearOverlay == null)
     {
         var polarBear            = BitmapDescriptorFactory.FromResource(Resource.Drawable.polarbear);
         var groundOverlayOptions = new GroundOverlayOptions()
                                    .InvokeImage(polarBear)
                                    .Anchor(0, 1)
                                    .Position(position, 150, 200);
         polarBearOverlay = googleMap.AddGroundOverlay(groundOverlayOptions);
     }
     else
     {
         polarBearOverlay.Position = InMaui;
     }
 }
        protected override NativeGroundOverlay CreateNativeItem(GroundOverlay outerItem)
        {
            var factory          = _bitmapDescriptorFactory ?? DefaultBitmapDescriptorFactory.Instance;
            var nativeDescriptor = factory.ToNative(outerItem.Icon);

            var opts = new GroundOverlayOptions()
                       .PositionFromBounds(outerItem.Bounds.ToLatLngBounds())
                       .Clickable(outerItem.IsClickable)
                       .InvokeBearing(outerItem.Bearing)
                       .InvokeImage(nativeDescriptor)
                       .InvokeTransparency(outerItem.Transparency)
                       .InvokeZIndex(outerItem.ZIndex);

            var overlay = NativeMap.AddGroundOverlay(opts);

            // associate pin with marker for later lookup in event handlers
            outerItem.NativeObject = overlay;
            return(overlay);
        }
        public void AddFromResource(View view)
        {
            if (hMap == null)
            {
                return;
            }
            if (null != overlay)
            {
                overlay.Remove();
            }
            Log.Debug(TAG, "AddFromResource: ");
            GroundOverlayOptions options = new GroundOverlayOptions().Position(MapUtils.FRANCE2, 50, 50)
                                           .InvokeImage(BitmapDescriptorFactory.FromResource(Resource.Drawable.niuyouguo));

            overlay = hMap.AddGroundOverlay(options);
            CameraPosition cameraPosition = new
                                            CameraPosition.Builder().Target(MapUtils.FRANCE2).Zoom(18).Bearing(0f).Tilt(0f).Build();
            CameraUpdate cameraUpdate = CameraUpdateFactory.NewCameraPosition(cameraPosition);

            hMap.MoveCamera(cameraUpdate);
        }
        private void OverlayDemo(HuaweiMap hMap)
        {
            hMap.Clear();

            GroundOverlay        groundOverlay1;
            BitmapDescriptor     descriptor1           = BitmapDescriptorFactory.FromResource(Resource.Drawable.hmslogo);
            GroundOverlayOptions groundOverlay1Options = new GroundOverlayOptions()
                                                         .Position(new LatLng(41.010037, 28.9819363), 2400, 2400)
                                                         .InvokeImage(descriptor1);

            groundOverlay1Options.Clickable(true);
            groundOverlay1 = hMap.AddGroundOverlay(groundOverlay1Options);

            GroundOverlay        groundOverlay2;
            BitmapDescriptor     descriptor2           = BitmapDescriptorFactory.FromResource(Resource.Drawable.maplogo);
            GroundOverlayOptions groundOverlay2Options = new GroundOverlayOptions()
                                                         .Position(new LatLng(41.024204, 29.009406), 2400, 2400)
                                                         .InvokeImage(descriptor2);

            groundOverlay2Options.Clickable(true);
            groundOverlay2 = hMap.AddGroundOverlay(groundOverlay2Options);
        }
Exemple #13
0
        public void OnMapReady(GoogleMap googleMap)
        {
            _googleMap = googleMap;

            googleMap.MyLocationEnabled      = true;
            googleMap.MyLocationButtonClick += LocationButtonClick;

            googleMap.UiSettings.MapToolbarEnabled   = false;
            googleMap.UiSettings.ZoomControlsEnabled = true;
            googleMap.UiSettings.CompassEnabled      = true;

            SetUpLocation();

            //Set up current position/image
            BitmapDescriptor     image = BitmapDescriptorFactory.FromResource(Resource.Drawable.bluedot);
            GroundOverlayOptions groundOverlayOptions = new GroundOverlayOptions()
                                                        .Position(LocationToLatLong(_currentLocation), 10, 10)
                                                        .InvokeImage(image);

            _myOverlay = _googleMap.AddGroundOverlay(groundOverlayOptions);

            MoveCamera(_currentLocation);
        }
        public void MostrarEstacionamentosNoMap(JArray lista)
        {
            foreach (Marcador marcador in MarcadoresColocados)
            {
                marcador.Marker.Remove();
                foreach (Polyline linha in marcador.Linhas)
                {
                    linha.Remove();
                }
            }
            MarcadoresColocados.Clear();

            foreach (Polyline linha in Polylines)
            {
                linha.Remove();
            }
            Polylines.Clear();
            foreach (var estacionamento in lista)
            {
                var latitude  = (estacionamento["Localizacao"])["Latitude"].Value <double>();
                var longitude = (estacionamento["Localizacao"])["Longitude"].Value <double>();
                var altitude  = (estacionamento["Localizacao"])["Altitude"].Value <float>();



                LatLng latlng = new LatLng(Convert.ToDouble(latitude), Convert.ToDouble(longitude));


                var           imagemMarcador = BitmapDescriptorFactory.FromResource(Resource.Drawable.parking);
                MarkerOptions options        = new MarkerOptions().SetPosition(latlng).SetTitle("").SetIcon(imagemMarcador);

                Marker ponto = Mapa.AddMarker(options);
                this.Markers.Add(ponto);
                Marcador marcador = new Marcador((JObject)estacionamento, ponto);
                MarcadoresColocados.Add(marcador);
                var pontos = (JArray)estacionamento["Pontos"];
                MostrarPontosNoMapa((JObject)estacionamento, pontos);
                if (!string.IsNullOrEmpty(estacionamento["ImagemBase64"].Value <string>()))
                {
                    try
                    {
                        var swbounds = new LatLng(estacionamento["SWBoundImagem"].Value <double>("Latitude"),
                                                  estacionamento["SWBoundImagem"].Value <double>("Longitude"));
                        var nebounds = new LatLng(estacionamento["NEBoundImagem"].Value <double>("Latitude"),
                                                  estacionamento["NEBoundImagem"].Value <double>("Longitude"));


                        LatLngBounds bounds = new LatLngBounds(swbounds, nebounds);



                        byte[] decodedString = Base64.Decode(estacionamento["ImagemBase64"].Value <string>(), Base64Flags.Default);

                        Bitmap decodedByte = BitmapFactory.DecodeByteArray(decodedString, 0, decodedString.Length);

                        var bitmapDescriptor = BitmapDescriptorFactory.FromBitmap(decodedByte);

                        GroundOverlayOptions newarkMap = new GroundOverlayOptions()
                                                         .InvokeImage(bitmapDescriptor).PositionFromBounds(bounds);

                        var overlay = Mapa.AddGroundOverlay(newarkMap);
                        overlay.Clickable        = true;
                        Mapa.GroundOverlayClick += (obj, args) =>
                        {
                            if (args.GroundOverlay.Id == overlay.Id)
                            {
                                if (STATUS_CONTROLE == StatusGUI.Normal)
                                {
                                    this.EstacionamentoSelecionado = (JObject)estacionamento;
                                    if (this.EstacionamentoSelecionadoEvent != null)
                                    {
                                        (this.EstacionamentoSelecionadoEvent).DynamicInvoke(EstacionamentoSelecionado);
                                    }
                                }
                            }
                            else
                            {
                                if ((Action)this.CliqueNoChaoEvent != null)
                                {
                                    CliqueNoChaoEvent.DynamicInvoke(args.GroundOverlay);
                                }
                            }
                        };
                    }
                    catch (Exception ex)
                    {
                    }
                }
            }
        }