public Mapa() { InitializeComponent(); BuildLocalizedApplicationBar(); this.txtNomeLinha.Text = string.Format("Linha {0} - {1}", App.LinhaSelecionada.Codigo, App.LinhaSelecionada.Nome); this.LayerPosicaoOnibus = new MapLayer(); this.LayerMinhaLocalizacao = new MapLayer(); mapOnibus.MapElements.Clear(); mapOnibus.MapElements.Add(App.ItinerarioViewModel.ShapeRota); mapOnibus.Layers.Clear(); mapOnibus.Layers.Add(LayerPosicaoOnibus); MinhaPosicao = new MapOverlay(); MinhaPosicao.Content = PinMaker.Usuario(); MinhaPosicao.PositionOrigin = new Point(0.5, 0.5); webBrowser = new WebBrowser(); webBrowser.IsScriptEnabled = true; webBrowser.ScriptNotify += webBrowser_ScriptNotify; webBrowser.Navigate(new Uri("/App_Files/HtmlMapa.html#" + App.LinhaSelecionada.Codigo, UriKind.Relative)); }
public void CarregarDados(Int32 pLinhaId) { this.LayerPontosOnibus = new MapLayer(); this.ShapeRota = new MapPolyline(); App.LinhaSelecionada = LinhaFacade.Instance.ObterPorId(pLinhaId); #region Shape da linha var listaRotas = RotaFacade.Instance.ListarRotaPorLinha(App.LinhaSelecionada.Codigo); var CoordenadasRota = new GeoCoordinateCollection(); var listaCoordenadas = listaRotas.Select(rota => new GeoCoordinate(Convert.ToDouble(rota.Latitude), Convert.ToDouble(rota.Longitude))).ToList(); foreach (var item in listaCoordenadas) { CoordenadasRota.Add(item); } ShapeRota.StrokeColor = App.LinhaSelecionada.ObjetoCor; ShapeRota.StrokeThickness = 4; ShapeRota.Path = CoordenadasRota; LayoutRota = LocationRectangle.CreateBoundingRectangle(CoordenadasRota); #endregion #region Pontos da linha //Desenha os pontos da linha no layer var listaPontos = PontoFacade.Instance.ListarPontosPorLinha(App.LinhaSelecionada.Codigo); foreach (var ponto in listaPontos) { double latitude = 0, longitude = 0; Double.TryParse(ponto.Latitude, out latitude); Double.TryParse(ponto.Longitude, out longitude); var coordenada = new GeoCoordinate(latitude, longitude); var imgPontoOnibus = PinMaker.PontoDeOnibus(ponto) as Image; imgPontoOnibus.Tap += (sender, e) => { MessageBox.Show(ponto.Nome); }; var mapOver = new MapOverlay(); mapOver.GeoCoordinate = coordenada; mapOver.Content = imgPontoOnibus; mapOver.PositionOrigin = new Point(0.5, 1); LayerPontosOnibus.Add(mapOver); } #endregion if (CarregamentoCompleto != null) { CarregamentoCompleto(this, null); } }
private void webBrowser_ScriptNotify(object sender, NotifyEventArgs e) { try { var json = e.Value; if (String.IsNullOrEmpty(json) || json.ToUpper().Equals("NULL")) { LayerPosicaoOnibus.Clear(); ucToastMessage.ShowToast("Não existem veículos desta linha em funcionamento no momento."); } else { var lista = JsonConvert.DeserializeObject <List <Coordenada> >(json); LayerPosicaoOnibus.Clear(); var corLinha = App.LinhaSelecionada.ObjetoCor; foreach (var item in lista) { Double latitude = Convert.ToDouble(item.latitude); Double longitude = Convert.ToDouble(item.longitude); var coordenada = new GeoCoordinate(latitude, longitude); var mapOver = new MapOverlay(); mapOver.GeoCoordinate = coordenada; mapOver.Content = PinMaker.Onibus(corLinha, item.hora); mapOver.PositionOrigin = new Point(0.5, 0.5); LayerPosicaoOnibus.Add(mapOver); } } } catch (Exception ex0) { } }