2017-07-26 1 views
0

私のxamarinクロスプラットフォームアプリケーションでは、現在のユーザーの場所にマップを集中させようとしていますが、アプリケーションが起動しても私はxamarin用のgeolocatorプラグインをダウンロードしたサンプルを適用できませんでしたが、 。とxamarin形式のマップを使用すると、どのように地図をユーザーの現在地に合わせることができますか?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Xamarin.Forms.Maps; 
using Xamarin.Forms; 
using Plugin.Geolocator; 

namespace Map_Test 
{ 

public partial class App : Application 
{ 
    public App() 
    { 

     Map mapa = new Map(); 
     mapa.IsShowingUser = true; 

     var locator = CrossGeolocator.Current; 
     var position = locator.GetPositionAsync(); 

     mapa.MoveToRegion(MapSpan.FromCenterAndRadius(new Position(position.Latitude, position.Longitude), Distance.FromMiles(1))); 



     var rootPage = new ContentPage(); 
     rootPage.Content = mapa; 

     MainPage = rootPage; 

    } 

    protected override void OnStart() 
    { 
     // Handle when your app starts 
    } 

    protected override void OnSleep() 
    { 
     // Handle when your app sleeps 
    } 

    protected override void OnResume() 
    { 
     // Handle when your app resumes 
    } 
} 
} 

私は新しいContentPageを追加し、これをしなかったが、私はupdatePositionメソッドからposition.Latitudeとposition.Longitude値にアクセスする方法がわかりません。

using Plugin.Geolocator; 
using System; 
using System.Collections.Generic; 
using System.Diagnostics; 
using System.Linq; 
using System.Text; 

using Xamarin.Forms; 
using Xamarin.Forms.Maps; 
using Plugin.Geolocator; 

namespace Map_Test 
{ 
public class MapTest : ContentPage 
{ 
    Label locationLabel = new Label(); 
    public MapTest() 
    { 
     Map mapa = new Map(); 
     mapa.IsShowingUser = true; 
     mapa.MoveToRegion(MapSpan.FromCenterAndRadius(new Position(position.Latitude, position.Longitude), 
             Distance.FromMiles(1))); 

     Content = new StackLayout 
     { 
      Children = { 
       mapa 
      } 
     }; 
    } 

    public async void updatePosition() 
    { 
     var locator = CrossGeolocator.Current; 
     var position = await locator.GetPositionAsync(); 
    } 
} 
} 
+0

あなたはどのような例を使用しましたが?何が起こるのですか? –

+0

'Task 'に 'Latitude'の定義が含まれておらず、 'Latitude'の型が 'Task 'の最初の引数を受け入れることができませんでした(使用するディレクティブまたはアセンブリ参照がありませんか?) 'タスク 'に' Longitude 'の定義が含まれておらず、拡張メソッドがない'経度 'タイプの最初の引数'タスク 'を受け入れることができます(使用指示文またはアセンブリ参照がありません) –

+0

これは例です私は使用しました: https://stackoverflow.com/a/36630649/7945025 –

答えて

1

私はそれをこのように解決:

using Plugin.Geolocator; 
using System; 
using System.Collections.Generic; 
using System.Diagnostics; 
using System.Linq; 
using System.Text; 
using Xamarin.Forms; 
using Xamarin.Forms.Maps; 

namespace Map_Test 
{ 
public class MapTest : ContentPage 
{ 
    public Map mapa = new Map(); 

    private async void findMe() 
    {   
     var locator = CrossGeolocator.Current; 
     Plugin.Geolocator.Abstractions.Position position = new Plugin.Geolocator.Abstractions.Position(); 

     position = await locator.GetPositionAsync(); 
     mapa.MoveToRegion(MapSpan.FromCenterAndRadius(new Position(position.Latitude, position.Longitude), 
             Distance.FromMiles(1))); 
    } 

    public MapTest() 
    { 
     mapa.IsShowingUser = true; 
     findMe(); 


     var position = new Position(-38.743146, -72.615408); 
     var pin1 = new Pin 
     { 
      Type = PinType.Generic, 

      Position = position, 
      Label = "Estacionamiento en Pasaje A", 
      Address = "custom detail info" 
     }; 

     mapa.Pins.Add(pin1); 

     Content = new StackLayout 
     { 

      Children = { 
       mapa 
      } 
     }; 
    } 


} 
} 
関連する問題