using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

using Windows.Devices.Geolocation;

using System.Net.Http;
using Windows.Data.Json;

// Die Elementvorlage "Leere Seite" ist unter http://go.microsoft.com/fwlink/?LinkId=234238 dokumentiert.

namespace Geolokation
{
    /// <summary>
    /// Eine leere Seite, die eigenständig verwendet werden kann oder auf die innerhalb eines Rahmens navigiert werden kann.
    /// </summary>
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
        }

        /// <summary>
        /// Wird aufgerufen, wenn diese Seite in einem Rahmen angezeigt werden soll.
        /// </summary>
        /// <param name="e">Ereignisdaten, die beschreiben, wie diese Seite erreicht wurde. Die
        /// Parametereigenschaft wird normalerweise zum Konfigurieren der Seite verwendet.</param>
        protected override async void OnNavigatedTo(NavigationEventArgs e)
        {
            // Abfrage des Standorts
            Geolocator gl = new Geolocator();
            Geoposition pos = await gl.GetGeopositionAsync();

            // Übertragen der geografischen Breite und Länge in TextBlock-Felder 
            locationLa.Text = pos.Coordinate.Latitude.ToString();
            locationLo.Text = pos.Coordinate.Longitude.ToString();


            // Abfrage standortspezifischer Informationen 
            HttpClient hc = new HttpClient();
            hc.BaseAddress = new Uri("http://nominatim.openstreetmap.org");  // Non-Profit-Organisation unter Open License

            HttpResponseMessage httpResult = await hc.GetAsync(
                                    String.Format("reverse?format=json&lat={0}&lon={1}",
                                    pos.Coordinate.Latitude, pos.Coordinate.Longitude));

            JsonObject jo = JsonObject.Parse(await httpResult.Content.ReadAsStringAsync());
            JsonObject joAddress = jo.GetNamedObject("address");

            locationA.Text = joAddress.GetNamedString("city");
        }
    }
}
