获取有关单击了哪个图钉的信息
Posted
技术标签:
【中文标题】获取有关单击了哪个图钉的信息【英文标题】:getting information about which push pin was clicked 【发布时间】:2014-11-04 17:45:30 【问题描述】:我正在构建一个读取文件的 Windows Phone 8.1 应用程序(其中包含 GPS 点,每个点由例如纬度和经度字段组成)。对于每个点,我都有它,因此它在地图控件上显示一个小图钉图标,基于它与上述文件的协调。我想让图钉可点击,最终目标是获取用户点击的点的纬度和经度,并根据点击的点执行适当的操作。我怎样才能掌握这些信息?这是我尝试过的,但它不起作用:
private async void Image_Tapped(object sender, TappedRoutedEventArgs e)
var point = sender as Geopoint;
MessageDialog msgbox = new MessageDialog("point tapped: " + point.Position.Latitude );
await msgbox.ShowAsync();
这是我的模板:
<Maps:MapControl x:Name="myMap">
<Maps:MapItemsControl ItemsSource="Binding ">
<Maps:MapItemsControl.ItemTemplate>
<DataTemplate>
<Image Source="Assets/pushpin.png" Tapped="Image_Tapped" Width="50" Height="50" Maps:MapControl.Location="Binding"></Image>
</DataTemplate>
</Maps:MapItemsControl.ItemTemplate>
</Maps:MapItemsControl>
</Maps:MapControl>
这是我用来读取文件和显示图钉的(它显示它们很好)
protected async override void OnNavigatedTo(NavigationEventArgs e)
Geoposition position = await App.DataModel.GetCurrentPosition();
await myMap.TrySetViewAsync(position.Coordinate.Point, 16D);
List<Geopoint> list = new List<Geopoint>();
bool exist; // used to check if JSON file exists
exist = await App.DataModel.FileExistsAsync();
if (exist == true)
// read the file and load points into a list
await App.DataModel.ReadFile();
foreach (var point in App.DataModel.notes)
Geopoint geo = new Geopoint(new BasicGeoposition()
Latitude = point.Latitude,
Longitude = point.Longitude
);
list.Add(geo);
myMap.DataContext = list;
【问题讨论】:
【参考方案1】:在您的Image_Tapped
处理程序中,sender 变量不是Geopoint
,而是Image
。但Geopoint
应该是这张图片的DataContext
var point = (sender as Image).DataContext as Geopoint;
【讨论】:
以上是关于获取有关单击了哪个图钉的信息的主要内容,如果未能解决你的问题,请参考以下文章