private void ColocarNovoPontoMapa(LatLng latlngOrigem, LatLng latlngDest, JObject estacionamento) { MarkerOptions options = new MarkerOptions().SetPosition(latlngOrigem).SetTitle("").SetIcon(BitmapDescriptorFactory.FromResource(Resource.Drawable.dot)); Marker ponto = GMap.AddMarker(options); Marcador marcador = new Marcador(estacionamento, ponto); if (latlngDest != null) { var _latitude = latlngDest.Latitude; var _longitude = latlngDest.Longitude; //var _altitude = (ponto["Localizacao"])["Altitude"].Value<double>(); PolylineOptions opt = new PolylineOptions(); opt = opt.Add(latlngOrigem, new LatLng(_latitude, _longitude)); opt = opt.InvokeWidth(5); opt = opt.InvokeColor(Color.Red); Polyline line = GMap.AddPolyline(opt); marcador.Linhas.Add(line); } if (UltimoPontoInteracao != null) { marcador.Conexoes.Add(long.Parse(UltimoPontoInteracao.Title)); } marcador = SalvarPontoInserido(marcador); UltimoPontoInteracao = marcador.Marker; this.MarcadoresColocados.Add(marcador); }
private Marcador SalvarPontoInserido(Marcador marcador) { JArray jPontos = new JArray(); { string url = Resources.GetString(Resource.String.ParkingManagerServerURL) + string.Format("api/EstacionamentoModel/{0}/AdicionarPonto", EstacionamentoSelecionado["Id"].Value <long>()); JObject jPonto = new JObject(); jPonto.Add("VagasConectadas", null); JObject jLocalizacao = new JObject(); jLocalizacao.Add("Latitude", marcador.Marker.Position.Latitude); jLocalizacao.Add("Longitude", marcador.Marker.Position.Longitude); jLocalizacao.Add("Altitude", 0); jPonto.Add("Localizacao", jLocalizacao); jPonto.Add("Entrada", false); jPonto.Add("Saida", false); using (WebClient wc = new WebClient()) { wc.Headers.Add(HttpRequestHeader.ContentType, "application/json"); string result = wc.UploadString(url, jPonto.ToString()); long id = ((JObject)JsonConvert.DeserializeObject(result))["Id"].Value <long>(); marcador.Id = id; marcador.Marker.Title = id.ToString(); if (marcador.Conexoes != null && marcador.Conexoes.Count > 0) { AssociarPontos(id, marcador.Conexoes); } return(marcador); } } }
public void MarkerClickEvent(object sender, GoogleMap.MarkerClickEventArgs args) { Marcador marcador = this.MarcadoresColocados.Find(m => m.Marker.Id == args.Marker.Id); if (marcador != null) { UltimoPontoInteracao = args.Marker; } else { } }
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.dot)); Marker marker = GMap.AddMarker(options); 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(Color.Red); Polyline line = GMap.AddPolyline(opt); marcador.Linhas.Add(line); } } } MarcadoresColocados.Add(marcador); MostrarVagasNoMapa((JObject)ponto, vagas); } }
private void btNovaVagaClick(object sender, EventArgs e) { if (EstacionamentoSelecionado == null) { return; } this.STATUS_GUI = StatusGUI.CriandoVagas; if (eventoEscolhePontoPVaga != null) { GMap.MarkerClick -= eventoEscolhePontoPVaga; } eventoEscolhePontoPVaga = (object sendr, GoogleMap.MarkerClickEventArgs args) => { GMap.MarkerClick -= eventoEscolhePontoPVaga; eventoEscolhePontoPVaga = null; Marcador marcador = this.MarcadoresColocados.Find(m => m.Marker.Id == args.Marker.Id); if (marcador != null) { eventoEscolheLocalPVaga = (object sendrr, GoogleMap.MapLongClickEventArgs args2) => { GMap.MapLongClick -= eventoEscolheLocalPVaga; eventoEscolheLocalPVaga = null; this.STATUS_GUI = StatusGUI.Normal; JObject vaga = new JObject(); vaga.Add("Id", 0); vaga.Add("Numero", 0); vaga.Add("Tipo", 0); vaga.Add("Ocupacao", null); JObject localizacao = new JObject(); localizacao.Add("Latitude", args2.Point.Latitude); localizacao.Add("Longitude", args2.Point.Longitude); localizacao.Add("Altitude", 0); vaga.Add("Localizacao", localizacao); vaga.Add("Pavimento", 0); vaga.Add("Reserva", null); vaga.Add("Responsavel", EstacionamentoSelecionado["Responsavel"]); string vagaJson = vaga.ToString(); string url = Resources.GetString(Resource.String.ParkingManagerServerURL) + "api/VagaModels/?idPonto=" + marcador.Id; using (WebClient wc = new WebClient()) { wc.Headers.Add(HttpRequestHeader.ContentType, "application/json"); string result = wc.UploadString(url, "POST", vagaJson); JObject vagaInserida = ((JObject)JsonConvert.DeserializeObject(result)); MarkerOptions options = new MarkerOptions().SetPosition(args2.Point).SetTitle("Inserida"); Marker ponto = GMap.AddMarker(options); PolylineOptions opt = new PolylineOptions(); opt = opt.Add(marcador.Marker.Position, args2.Point); opt = opt.InvokeWidth(5); opt = opt.InvokeColor(Color.Red); Polyline line = GMap.AddPolyline(opt); } }; GMap.MapLongClick += eventoEscolheLocalPVaga; } }; GMap.MarkerClick += eventoEscolhePontoPVaga; }