2017-07-26 19 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

'任务'不包含'Latitude'的定义并且没有扩展方法'Latitude'接受'Task '类型的第一个参数可以找到(您是否缺少using指令或程序集引用?) '任务'不包含'经度'的定义,并且没有找到接受'任务'类型的第一个参数的扩展方法'经度'(您是否缺少using指令或程序集引用?) –

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


} 
} 
相关问题