2013-07-16 9 views
9

Tôi có ảnh chụp màn hìnhGet Tên quốc gia/khu vực từ windows phone 8

enter image description here

và tôi có ý định để lấy nước mà phải là "Nigeria". Sau khi đi qua lớp System.Globalization, tôi thấy đoạn mã dưới đây

System.Globalization.RegionInfo.CurrentRegion.EnglishName 

Nhưng tôi nhận được "Hoa Kỳ", mà là "Regional Format" từ hình trên. Không có cách nào tôi có thể lấy cài đặt giá trị Country/Region?

+0

Bạn nhận được gì với RegionInfo.CurrentRegion.DisplayName? –

+0

Tôi nhận được kết quả tương tự "Hoa Kỳ" bằng cách sử dụng RegionInfo.CurrentRegion.DisplayName – jade

+0

Bạn đã thử nghiệm trên thiết bị thực tế chưa? –

Trả lời

-2

Đây là những gì tôi đã làm vào cuối ngày. Trước tiên tôi sử dụng thư viện API vị trí để có được tọa độ (kinh độ và vĩ độ) của địa điểm

 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); 
      } 
     } 

sau đó sử dụng định vị ngược của google để có được thông tin hoặc thông tin chi tiết của địa điểm dựa trên kinh độ và vĩ độ

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

tức là nếu các vĩ độ là 60 và kinh độ là 60

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

Từ kết quả json, bạn sẽ có thể lấy của đất nước dài và ngắn Tên.

+1

Chết tiệt, đó là một giải pháp khó chịu. Điều gì sẽ xảy ra khi ai đó đến một quốc gia khác? Sau đó, tất cả các đột ngột các định dạng trong điện thoại của ông là thay đổi lol. –

+1

Nhận điểm của bạn Leon, mong muốn Microsoft sẽ đưa ra một giải pháp. – jade

0

Sử dụng System.Threading.Thread.CurrentThread.CurrentCulture. Nó phải phản ánh chính xác ngôn ngữ của điện thoại.

+0

Tôi nghĩ anh ấy muốn nhận khu vực, không phải ngôn ngữ. – anderZubi

+0

Tôi đã thử System.Threading.Thread.CurrentThread.CurrentCulture, điều này sẽ cung cấp cho tôi mã quốc gia miền địa phương là en-US. Những gì tôi muốn nhận là cài đặt giá trị Quốc gia/Vùng là "Nigeria" từ hình ảnh tôi đã đăng ở trên. – jade

0

Hãy thử điều này

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

Vẫn hiển thị "Hoa Kỳ", tôi nghĩ rằng lớp RegionInfo chỉ hiển thị các giá trị Định dạng Vùng không phải là giá trị Quốc gia/Khu vực – jade

2

Tôi biết đó là cũ, nhưng có lẽ một người nào đó đến đây tìm kiếm câu trả lời:

System.Globalization.RegionInfo.CurrentRegion.TwoLetterISORegionName 
+1

Chỉ trả về hai chữ cái, ví dụ: 'US' thay vì' Hoa Kỳ'.Ngoài ra, câu hỏi có vẻ là lý do tại sao OP không nhận được cái tên mà anh ta mong đợi. –

0

Câu trả lời chính xác cho những gì người dùng đang yêu cầu các là thế này:

Windows.System.UserProfile.GlobalizationPreferences.HomeGeographicRegion 

này nên cung cấp cho bạn thông tin liên quan các quốc gia/khu vực Quốc gia/Khu vực lựa chọn trong cài đặt ngôn ngữ + khu vực.