2013-07-16 5 views
9

mam screenieUzyskaj nazwę kraj/region z Windows Phone 8

enter image description here

i jestem zamierza odzyskać kraj, który powinien być "Nigeria". Po przejściu przez klasy System.Globalization, znalazłem fragment kodu poniżej

System.Globalization.RegionInfo.CurrentRegion.EnglishName 

Ale jestem coraz „Stany Zjednoczone”, która jest „Regionalny Format” z powyższego obrazka. Czy nie ma możliwości odzyskania ustawień wartości kraju/regionu?

+0

Co otrzymujesz z RegionInfo.CurrentRegion.DisplayName? –

+0

Otrzymuję ten sam wynik "Stany Zjednoczone" przy użyciu parametru RegionInfo.CurrentRegion.DisplayName – jade

+0

Czy próbowałeś testować na rzeczywistym urządzeniu? –

Odpowiedz

-2

To co zrobiłem pod koniec dnia. Pierwszy użyłem biblioteki Lokalizacja API, aby uzyskać współrzędne (długość i szerokość geograficzna) położenia

 Geolocator geolocator = new Geolocator(); 
     geolocator.DesiredAccuracyInMeters = 50; 

     try 
     { 
      // Request the current position 
      Geoposition geoposition = await geolocator.GetGeopositionAsync(
       maximumAge: TimeSpan.FromMinutes(5), 
       timeout: TimeSpan.FromSeconds(10) 
      ); 

      string latitude = geoposition.Coordinate.Latitude.ToString("0.00"); 
      string longitude = geoposition.Coordinate.Longitude.ToString("0.00");     


     } 
     catch (Exception ex) 
     { 
      if ((uint)ex.HResult == 0x80004004) 
      { 
       // the application does not have the right capability or the location master switch is off 
       MessageBox.Show("Location is disabled in phone settings.", "Can't Detect Location", MessageBoxButton.OK); 

      } 
      //else 
      { 
       // something else happened acquring the location 
       System.Diagnostics.Debug.WriteLine(ex.Message); 
      } 
     } 

następnie stosując odwrotną geolokalizacji Google, aby uzyskać informacje lub dane o lokalizacji na podstawie długości i szerokości geograficznej

http://maps.googleapis.com/maps/api/geocode/json?latlng=latitiude,longitude&sensor=true 

czyli jeżeli szerokość wynosi 60, a długość geograficzna to 60

http://maps.googleapis.com/maps/api/geocode/json?latlng=60,60&sensor=true 

Od wyniku json, będzie można odzyskać w kraju długie i krótkie Nazwa.

+1

Cholera, to takie paskudne rozwiązanie. Co się stanie, gdy ktoś pojedzie do innego kraju? Nagle zmieniło się formatowanie w telefonie, lol. –

+1

Zdobądź punkt Leon, życzę Microsofcie wymyślić rozwiązanie. – jade

0

Użyj System.Threading.Thread.CurrentThread.CurrentCulture. Powinno poprawnie odzwierciedlać język telefonu.

+0

Myślę, że chce dostać region, nie język. – anderZubi

+0

Próbowałem System.Threading.Thread.CurrentThread.CurrentCulture, to da mi kod kraju locale, który był en-US. To, co chcę uzyskać, to ustawienie wartości kraju/regionu, które jest "Nigeria" z obrazu zamieszczonego powyżej. – jade

0

Spróbuj

System.Globalization.RegionInfo.CurrentRegion.DisplayName; 
+0

Nadal pokazuje "Stany Zjednoczone", myślę, że klasa RegionInfo pokazuje tylko wartości formatu regionalnego, a nie wartość kraju/regionu – jade

2

Wiem, że to stary, ale może ktoś przychodzi tu w poszukiwaniu odpowiedzi:

System.Globalization.RegionInfo.CurrentRegion.TwoLetterISORegionName 
+1

Powoduje to tylko dwukoliterowy kod, np. 'US' zamiast" Stany Zjednoczone ".Wydaje się również, że pytanie brzmi, dlaczego OP nie otrzymuje nazwy, której oczekiwał. –

0

Prawidłowa odpowiedź na to, co użytkownik jest pytaniem jest to:

Windows.System.UserProfile.GlobalizationPreferences.HomeGeographicRegion 

To powinno dać informację dotyczącą Wybór kraju/regionu w ustawieniu język + region.