簡體   English   中英

xamarin 形成地圖的標記單擊事件

[英]xamarin forms map's marker click event

我有一張地圖,上面有一個大頭針。 如下:

var map = new Map()
                {
                    IsShowingUser = true,
                    HeightRequest = 100,
                    WidthRequest = 960,
                    VerticalOptions = LayoutOptions.FillAndExpand
                };

以及引腳位置和標簽如下:

var pin1 = new Pin();
pin1.Type = PinType.Place;
pin1.Position = position;
pin1.Label = "Ticket Number: " + Cache.Instance.Ticket.TicketNumber;

點擊事件:

pin1.Clicked += delegate
{
    uri = new Uri("http://maps.google.com/maps?daddr=" + position.Latitude + "," + position.Longitude);
    Device.OpenUri(uri);
}

地圖加載:

var stack = new StackLayout { Spacing = 00 };
        stack.Children.Add(map); 
        Content = stack;

單擊 pin 標記時,它會打開一個信息窗口並單擊該窗口並單擊事件代碼觸發器。 有什么辦法可以不顯示信息窗口,並且只要我點擊標記就會觸發事件?

謝謝

使用Map_PinClicked處理PinClick事件,如果設置e.Handled = true ,則 Pin 選擇不會自動工作。 所有引腳選擇操作都委托給您。

在頁面中:

    map.PinClicked += Map_PinClicked;

    // Selected Pin changed
    map.SelectedPinChanged += SelectedPin_Changed;

    map.InfoWindowClicked += InfoWindow_Clicked;

    map.InfoWindowLongClicked += InfoWindow_LongClicked;

然后點擊事件:

    void Map_PinClicked(object sender, PinClickedEventArgs e)
    {
        e.Handled = true;

        uri = new Uri("http://maps.google.com/maps?daddr=" + position.Latitude + "," + position.Longitude);
        Device.OpenUri(uri);

    }

您可以查看此處了解更多信息。

目前在 Xamarin.Forms 5 中,PinClicked 事件被指定為已過時。 Device.OpenUri 也是如此。 可以使用pin1.MarkerClicked += Pin_Clicked; 反而。 您可以通過將 EventArgs 的HideInfoWindow屬性設置為 true 來阻止信息窗口打開。 微軟文檔

 private async void Pin_Clicked(object sender, PinClickedEventArgs e)
 {
        try
        {
            e.HideInfoWindow = true;
            var pin = sender as Pin;
            var uri = new Uri("http://maps.google.com/maps?daddr=" + pin.Position.Latitude + "," + pin.Position.Longitude);
            Launcher.OpenAsync(uri);
        }
        catch (Exception ex)
        {
           //log error
        }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM