Exemplo n.º 1
0
        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            Geopoint lastPoint = new Geopoint(new BasicGeoposition()), currentPoint;

            Windows.UI.Core.DispatchedHandler actualizarTextBox = async() =>
            {
                HttpClient          client = new HttpClient();
                HttpResponseMessage stream = await client.GetAsync(urlInicial + lugarIncialTextBox.Text + urlMedio + lugarFinalTextBox.Text + urlFinal);

                //Si ha obtenido una ruta como respuesta, escribe en el mapa
                if (stream.IsSuccessStatusCode)
                {
                    String str = await stream.Content.ReadAsStringAsync();

                    JsonValue jsonValue = JsonValue.Parse(str);
                    arrayRuta = jsonValue.GetObject().GetNamedArray("resourceSets").GetObjectAt(0).GetNamedArray("resources").GetObjectAt(0).GetNamedArray("routeLegs").GetObjectAt(0).GetNamedArray("itineraryItems");

                    //Bucle que dibuja cada punto de la ruta y la ruta entre el punto actual y el anterior en el mapa
                    var first = arrayRuta.First();
                    foreach (var puntoRuta in arrayRuta)
                    {
                        PuntoBing puntoBing = obtenerPunto(puntoRuta.GetObject());

                        currentPoint = geopositionPoint(puntoBing.Latitude, puntoBing.Longitude);
                        string nombres = "";
                        foreach (string nombre in puntoBing.Nombre)
                        {
                            nombres = nombres + Environment.NewLine + nombre;
                        }
                        mapIconRuta = new MapIcon
                        {
                            Location = currentPoint,
                            Title    = nombres
                        };
                        mapView.MapElements.Add(mapIconRuta);

                        puntos.Add(puntoBing);
                        escribePunto(puntoBing);

                        //Si el punto actual es el último, pasa a ser el actual en el código

                        if (!puntoRuta.Equals(first))
                        {
                            // Obtiene la ruta entre el punto anterior y el actual.
                            MapRouteFinderResult routeResult =
                                await MapRouteFinder.GetDrivingRouteAsync(
                                    startPoint : lastPoint,
                                    endPoint : currentPoint,
                                    optimization : MapRouteOptimization.Time,
                                    restrictions : MapRouteRestrictions.None);

                            if (routeResult.Status == MapRouteFinderStatus.Success)
                            {
                                // Usa la ruta para inicializar MapRouteView.
                                MapRouteView viewOfRoute = new MapRouteView(routeResult.Route);
                                viewOfRoute.RouteColor   = Colors.Yellow;
                                viewOfRoute.OutlineColor = Colors.Black;

                                // Añade el nuevo MapRouteView al conjunto de rutas
                                // de MapControl.
                                mapView.Routes.Add(viewOfRoute);

                                //El punto actual se convierte en el anterior
                                lastPoint = currentPoint;
                            }
                        }
                        else
                        {
                            lastPoint = currentPoint;
                        }
                    }
                }
                else
                {
                    rutaTextBox.Text = "Mal";
                }
            };

            await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, actualizarTextBox);
        }
Exemplo n.º 2
0
 private void escribePunto(PuntoBing punto)
 {
     rutaTextBox.Text    = rutaTextBox.Text + Environment.NewLine + "Acción " + iteracionEscritura + " : " + Environment.NewLine + " A " + punto.Distancia + "Km " + punto.Accion;
     iteracionEscritura += 1;
 }