2016-04-19 10 views
0

GPSの位置を特定し、それをアドレスに変換する簡単なコードが必要です。混合ジオロケーターとforms.maps xamarin.forms

GeolocatorライブラリとForms.Mapsが見つかりました。両方を混合しています。私は実際に座標からアドレスを取得したい場合を除いて、すべてがOKと思われます。ラベルはアドレスを受け取ることはありません。

は、ここでラベルテキストが変更されない場合は、これはジオコーダは、任意のアドレスを見つけることができないとpossibleAddressesが空であることを意味し、コード

public partial class PublicarCarona : ContentPage 
{ 
    Geocoder geoCoder; 

    public PublicarCarona() 
    { 
     InitializeComponent(); 

     geoCoder = new Geocoder(); 
    } 

    public async void OnReverseGeocodeButtonClicked(object sender, EventArgs e) 
    { 

     try 
     { 

      var locator = CrossGeolocator.Current; 
      locator.DesiredAccuracy = 50; 
      var position = await locator.GetPositionAsync(timeoutMilliseconds: 10000); 
      double? latitude = Convert.ToDouble (position.Latitude); 
      double? longitude = Convert.ToDouble (position.Longitude); 

      if (latitude != null && longitude != null) 
      { 
       var revposition = new Xamarin.Forms.Maps.Position(latitude.Value, longitude.Value); 
       var possibleAddresses = await geoCoder.GetAddressesForPositionAsync(revposition); 
       foreach (var address in possibleAddresses) 
        lblcoordenadas.Text += address + "\n"; 
      } 
      else lblcoordenadas.Text += "erro"; 

     } 
     catch (Exception ex) 
     { 
      await DisplayAlert("Notification", "Unable to get GPS Location " + ex, "Ok"); 
     } 
    } 
} 
+1

です。それは二重否定であり、すべてが大丈夫であることを意味します。 – Cheesebaron

+0

これは何をテストしていますか? AndroidまたはiOS端末ですか? – SushiHangover

+0

Android .... いいえ、lblcoordenadas.textにはアドレス名と表示が必要でしたが、アドレスはnullです。 –

答えて

0

です。

Androidでは、アプリにACCESS_COARSE_LOCATIONACCESS_FINE_LOCATIONの権限が必要です。ターゲットAPIレベル23(Android Marshmallow)の場合は、実行時にこれらの権限を要求する必要があります。実行時にアクセス許可を要求するのにPermissions Pluginを使用できます。

iOSでは、NSLocationWhenInUsageDescriptionキーをInfo.plistファイルに追加する必要があります。

このブログの記事で参照してくださいプラットフォームのセットアップセクション:ここでGeolocation for iOS, Android, and Windows Made Easy

+0

ありがとう,,,私はドロイドでテストしています。 私はコードを打ちましたが、まだ動作していません...私は、マップApiキーを持っていましたが、私はwhrereを知っていません –

+0

@MarceloCFernandes:マップapiキーは必要ありません。あなたはAndroidプロジェクトのターゲットSDKとは何ですか? AndroidManifestに権限を追加しましたか? – Giorgi

+0

はい、追加されました。コードの上を見てください。 マップapiは地図を表示する必要があるときですか? –

0

は、あなたが "` lblcoordenadas.Textがnothing`戻らない" 書き込みandroidmanifest

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> 
    <uses-sdk android:minSdkVersion="15" /> 
    <application android:label="AppCaronaSurf"> 
     <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyBoxE8NxaTEl52vOo6l-MJiZN806XOaNsM" /> 
     <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> 
    </application> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> 
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
</manifest> 
関連する問題