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;
单击图钉标记时,它会打开一个信息 window 并单击 window 并单击事件代码触发器。有什么方法可以不显示信息 window 并且只要我点击标记就会触发事件?
谢谢
使用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);
}
您可以查看 here 了解更多信息。
目前 Xamarin.Forms 5,PinClicked 事件被指定为过时。 Device.OpenUri 也是如此。
可以使用 pin1.MarkerClicked += Pin_Clicked;
代替。
您可以通过将 EventArgs 的 HideInfoWindow
属性 设置为 true 来阻止信息 window 打开。
docs.microsoft
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
}
}
我有一张地图,上面只有一个图钉。如下:
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;
单击图钉标记时,它会打开一个信息 window 并单击 window 并单击事件代码触发器。有什么方法可以不显示信息 window 并且只要我点击标记就会触发事件?
谢谢
使用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);
}
您可以查看 here 了解更多信息。
目前 Xamarin.Forms 5,PinClicked 事件被指定为过时。 Device.OpenUri 也是如此。
可以使用 pin1.MarkerClicked += Pin_Clicked;
代替。
您可以通过将 EventArgs 的 HideInfoWindow
属性 设置为 true 来阻止信息 window 打开。
docs.microsoft
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
}
}