private void MostrarPontosNoMapa(JObject estacionamento, JArray lista) { foreach (var ponto in lista) { var latitude = (ponto["Localizacao"])["Latitude"].Value <double>(); var longitude = (ponto["Localizacao"])["Longitude"].Value <double>(); var altitude = (ponto["Localizacao"])["Altitude"].Value <double>(); LatLng latlng = new LatLng(Convert.ToDouble(latitude), Convert.ToDouble(longitude)); MarkerOptions options = new MarkerOptions().SetPosition(latlng).SetTitle(ponto["Id"].Value <long>().ToString()).SetIcon(BitmapDescriptorFactory.FromResource(Resource.Drawable.placeholder_point)); Marker marker = Mapa.AddMarker(options); marker.Visible = false; var vagas = (JArray)ponto["VagasConectadas"]; Marcador marcador = new Marcador(estacionamento, marker) { Id = ponto["Id"].Value <long>() }; foreach (var conexao in ponto["Conexoes"]) { foreach (var _ponto in lista) { if (_ponto["Id"].Value <long>() == conexao.Value <long>()) { var _latitude = (_ponto["Localizacao"])["Latitude"].Value <double>(); var _longitude = (_ponto["Localizacao"])["Longitude"].Value <double>(); var _altitude = (_ponto["Localizacao"])["Altitude"].Value <double>(); PolylineOptions opt = new PolylineOptions(); opt = opt.Add(latlng, new LatLng(_latitude, _longitude)); opt = opt.InvokeWidth(5); opt = opt.InvokeColor(this.CorLinhaCaminhoEstacionamento); Polyline line = Mapa.AddPolyline(opt); marcador.Linhas.Add(line); } } } MarcadoresColocados.Add(marcador); MostrarVagasNoMapa(estacionamento.Value <long>("Id"), (JObject)ponto, vagas); } }
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) { } } } }