Как отобразить булавку на картах - PullRequest
0 голосов
/ 16 апреля 2019

Я мог отобразить карту в интерфейсе моего приложения, и теперь я пытаюсь отобразить ПИН-код моей текущей позиции.Я отображается в, но с кнопкой Нажмите, который показывает мне другую страницу содержимого.но я не смог отобразить его на той же странице даже после нажатия этой кнопки.Если есть способ показать это на той же странице и без нажатия какой-либо кнопки, я буду очень благодарен.

Вот код моего события Clicked_Button. Этот код работает, и когда я нажимаю на него, отображается новыйсодержательная страница с моей текущей позицией.но я хочу, чтобы он отображался в моем модуле карты на главной странице, это код XAML для моей карты (в виде сетки):

<maps1:Map  Grid.Column="1" 
Grid.Row="2" 
Grid.RowSpan="2" 
Grid.ColumnSpan="3"
x:Name="myMap">

Я пытался удалить "Content =myMap; "из моего внутреннего кода, чтобы сохранить его на главной странице, но пин-код не отображается.

protected async void OnButtonClicked_speed(object sender, EventArgs args)
{
    var locator = CrossGeolocator.Current;
    locator.DesiredAccuracy = 50;
    var position = await locator.GetPositionAsync(TimeSpan.FromSeconds(10));

    myMap = new Xamarin.Forms.Maps.Map(MapSpan.FromCenterAndRadius(
    new Xamarin.Forms.Maps.Position(position.Latitude,position.Longitude),
    Distance.FromMiles(0.5)))
    {
        IsShowingUser = true,
        VerticalOptions = LayoutOptions.FillAndExpand
    };

    var position1 = new Xamarin.Forms.Maps.Position(position.Latitude, position.Longitude);

    var pin1 = new Pin
    {
        Type = PinType.Place,
        Position = position1,
        Label = "Current Position",
        Address = ""
    };

    myMap.Pins.Add(pin1);
    Content = myMap;
}

1 Ответ

1 голос
/ 17 апреля 2019

Content = myMap

это эквивалентно повторному заполнению текущей страницы картой

, поэтому вы просто перемещаете код из метода OnButtonClicked_speed.

вот так:

в MainPage.xaml.cs

public partial class MainPage : ContentPage
{
    private Map myMap;
    public MainPage(Position position)
    {
        InitializeComponent();           
        myMap.MoveToRegion(MapSpan.FromCenterAndRadius(
            new Xamarin.Forms.Maps.Position(position.Latitude, position.Longitude),
            Distance.FromMiles(0.5)));
        myMap.IsShowingUser = true;
        myMap.VerticalOptions = LayoutOptions.FillAndExpand;
        var position1 = new Xamarin.Forms.Maps.Position(position.Latitude, position.Longitude);

        var pin1 = new Pin
        {
            Type = PinType.Place,
            Position = position1,
            Label = "Current Position",
            Address = ""
        };

        myMap.Pins.Add(pin1);
    }

  public static async Task<MainPage> CreateMainPageAsync()
    {

        var locator = CrossGeolocator.Current;
        locator.DesiredAccuracy = 50;
        var position = await locator.GetPositionAsync(TimeSpan.FromSeconds(10));
        MainPage page = new MainPage(position );
        return page;
    }
}

в App.xaml.cs

public partial class App : Application
{
    public App()
    {
        InitializeComponent();
    }

    protected override async void OnStart()
    {
        namespace.MainPage main = await namespace.MainPage.CreateMainPageAsync();
        MainPage = main;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...