2014-09-04 86 views
1

我正在開發wp8項目並需要找到位置。我已經使用windows.device.geoloaction命名空間來查找現在我需要查找地址(國家和郵政編碼)的經度和緯度。我發現this example,但我很困惑如何通過我獲得的座標。這是我的代碼。wp8中的城市地址

public async void FindTADeviceLocation() 
{ 
    ////Declare Geolocator object 
    Geolocator geolocator = new Geolocator(); 

    // Set user's accuracy 
    geolocator.DesiredAccuracy = PositionAccuracy.High; 

    //get the position of the user. 
    try 
    { 
     //The await guarantee the calls to be returned on the thread from which they were called 

     Geoposition geoposition = await geolocator.GetGeopositionAsync(
      maximumAge: TimeSpan.FromMinutes(1), 
      timeout: TimeSpan.FromSeconds(10) 
      ); 

     var geoQ = new ReverseGeocodeQuery(); 
     geoQ.QueryCompleted += geoQ_QueryCompleted; 

     if (geoQ.IsBusy == true) 
     { 
      geoQ.CancelAsync(); 
     } 
     // Set the geo coordinate for the query 
     geoQ.GeoCoordinate = geoposition.Coordinate; 

     geoQ.QueryAsync(); 

    } 

    catch (Exception ex) 
    { 
     if ((uint)ex.HResult == 0x80004004) 
     { 
      MessageBox.Show("position is unknown"); 
     } 

    } 
} 


void geoQ_QueryCompleted(object sender, QueryCompletedEventArgs<IList<MapLocation>> e) 
{  
    if (e.Result.Count() > 0) 
    { 
     string showString = e.Result[0].Information.Name; 
     showString = showString + "\nAddress: "; 
     showString = showString + "\n" + e.Result[0].Information.Address.PostalCode + " " + e.Result[0].Information.Address.City; 
     showString = showString + "\n" + e.Result[0].Information.Address.Country + " " + e.Result[0].Information.Address.CountryCode; 
     showString = showString + "\nDescription: "; 
     showString = showString + "\n" + e.Result[0].Information.Description.ToString(); 

     MessageBox.Show(showString); 
    } 
} 

我知道問題是在行geoQ.GeoCoordinate = geoposition.Coordinate;

但我怎樣才能將座標傳遞給geoQ.GeoCoordinate?

在此表示感謝

回答

0

這樣做。地理座標採用double類型的參數。所以我們所要做的就是將cordiantes轉換爲double並傳遞它。

var currentLocationLatitude = Convert.ToDouble(geoposition.Coordinate.Latitude.ToString("0.0000000000000")); 
var currentLocationLongitude = Convert.ToDouble(geoposition.Coordinate.Longitude.ToString("0.0000000000000")); 

var geoQ = new ReverseGeocodeQuery(); 
geoQ.QueryCompleted += geoQ_QueryCompleted; 

if (geoQ.IsBusy == true) 
{ 
    geoQ.CancelAsync(); 
} 
// Set the geo coordinate for the query 

geoQ.GeoCoordinate = new GeoCoordinate(currentLocationLatitude, currentLocationLongitude); 

geoQ.QueryAsync(); 

感謝

相關問題