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); }
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"); } } }
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)); }
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; } }
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; } }
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); }
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) { } } } }