2017-03-13 9 views
0

私は、アプリケーションの機能をマークする位置座標に取り組んでいます。Xamarinアプリケーションのマップ機能で現在の位置座標を取得する方法は?

私は次のDLLとGoogleマップを使用しています。場所があれば私のiPhoneシミュレータで

Xamarin.Forms.Maps 
Xam.Plugin.Geolocator 
Xam.Plugin.ExternalMaps 

は、NONE.Itは...ローマのいくつかの場所、イタリア

後は地図を引っ張って書かれたコードであるデフォルトの場所を引っ張る

public async Task<Xamarin.Forms.Maps.Position> GetPosition() 
     { 
      IsBusy = true; 
      Xamarin.Forms.Maps.Position p; 
      try 
      { 
       if (!locator.IsGeolocationAvailable) 
       { 
        p = new Xamarin.Forms.Maps.Position(); 
       } 
       if (!locator.IsGeolocationEnabled) 
       { 
        p = new Xamarin.Forms.Maps.Position(); 
       } 
       var position = await locator.GetPositionAsync(timeoutMilliseconds: 10000); 
       p = new Xamarin.Forms.Maps.Position(position.Latitude,position.Longitude); 
      } 
      catch (Exception ex) 
      { 
       Debug.WriteLine(ex.Message); 
       p = new Xamarin.Forms.Maps.Position(); 
      } 
      IsBusy = false; 

      return p; 
     } 

     public async Task<object> GetCityName(double latitude, double longitude) { 
      HttpClient client; 
      client = new HttpClient(); 
      client.MaxResponseContentBufferSize = 256000; 
      try 
      { 
       var response = await client.GetAsync("https://maps.googleapis.com/maps/api/geocode/json?latlng=" + latitude + "," + longitude); 
       if (response.IsSuccessStatusCode) 
       { 
        var result = await response.Content.ReadAsStringAsync(); 
        var json = Newtonsoft.Json.Linq.JObject.Parse(result); 
        var reValue = "" + json["results"][0]["formatted_address"]; 

        var strArr = reValue.Split(','); 
        if (strArr.Length > 2) 
         return strArr[strArr.Length - 2] + ", " +strArr[strArr.Length - 1]; 
        else 
         return ""; 
       } 
       else { 
        Debug.WriteLine(@"Failed."); 
        return "Failed"; 
       } 
      } 
      catch (Exception ex) 
      { 
       Debug.WriteLine(@"ERROR {0}", ex.Message); 
       return ex.Message; 
      } 
     } 

画像:

enter image description here

答えて

0

あなたのpを手の込んだ今ここで

if (CrossGeolocator.Current.IsGeolocationAvailable) 
{ 
    if (CrossGeolocator.Current.IsGeolocationEnabled) 
    { 
     var position = await locator.GetPositionAsync(timeoutMilliseconds: 10000); 
     p = new Xamarin.Forms.Maps.Position(position.Latitude,position.Longitude); 
    } 
    else 
    { 
     throw new Exception("Geolocation is turned off"); 
     // Geolocation is turned off for the device. 
    } 
} 
else 
{ 
    throw new Exception("Geolocation is turned off"); 
    // Geolocation not available for device 
} 

を使用すると、デフォルトの場所を取得しないことを確認するGetPosition()メソッドからキャッチハンドル:roblem、と次のように条件を変更してください。

関連する問題