我不确定点击地图标记/图钉时弹出的小窗口的术语,但是我想在这个暂时窗口中使用Bing Map图钉做什么就像这样显示它被点击/点击:
My Dog Spot - miPerroMancha.png
{ the thumbnail here }
5/29/2013
elAmadoDeFresno.png
{ the thumbnail here }
10/19/2014
IOW," popup"应该显示:
The image description, if available, plus file name; otherwise, just the file name,
The thumbnail version of the photo
The date the photo was taken
标记将固定在拍摄照片的地图上
到目前为止,我所获得的代码如下所示。 photraxMap 是Bing Map的名称; pbd 是一个类,其中包含有关图钉所代表的照片的信息:
String fileNameOnly = Path.GetFileName(pbd.filePath);
Pushpin pushpin = new Pushpin();
if (null == pbd.imgDescription)
{
pushpin.Text = fileNameOnly;
}
else
{
pushpin.Text = String.Format("{0} - {1}", pbd.imgDescription, fileNameOnly);
}
MapLayer.SetPosition(pushpin, new Location(pbd.latitude, pbd.longitude));
photraxMap.Children.Add(pushpin);
因此,文本将与我想在弹出窗口/弹出窗口中首先显示的内容相同。
当推动/点击/敲击图钉时,当然可以利用什么显示器,但是如何? Intellisense并没有向我显示任何明显的方式。我希望图钉有一些我可以分配HTML的属性。我正朝着正确的方向看,还是咆哮着错误的树?
如果这是不可能的,那么我可能需要的是一个弹出窗口(或一个"不受限制的弹出窗口"),它直接与Bing Map有关,但是由于点击了图钉,从那个位置弹出(弹出/不受限制的弹出的左上角在图钉中间)
我在你的文章博客上工作过。它似乎是一种享受,除了一件事:弹出的信息框是深灰色并且没有显示数据:
我确实稍微更改了代码,使用String和DateTime而不是两个字符串:
// The next few methods derived from http://rbrundritt.wordpress.com/2013/06/17/infoboxes-for-native-windows-store-apps/
private void CloseInfobox_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)
{
Infobox.Visibility = Visibility.Collapsed;
}
// Does an inline class make the most sense here?
public class PushpinMetadata
{
public string FileName { get; set; }
public DateTime DateTimeTaken { get; set; }
// TODO: Add a Bitmap for the Thumbnail
}
// TODO: Add the Bitmap/Thumbnail to the args and the class
public void AddPushpin(Location latlong, string fileName, DateTime dateTimeTaken, MapLayer layer)
{
Pushpin p = new Pushpin()
{
Tag = new PushpinMetadata()
{
FileName = fileName,
DateTimeTaken = dateTimeTaken // add Thumbnail = thumbnail
}
};
MapLayer.SetPosition(p, latlong);
p.Tapped += PinTapped;
layer.Children.Add(p);
}
private void PinTapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)
{
Pushpin p = sender as Pushpin;
PushpinMetadata m = (PushpinMetadata)p.Tag;
//Ensure there is content to be displayed before modifying the infobox control
if (!String.IsNullOrEmpty(m.FileName) || (null != m.DateTimeTaken))
{
Infobox.DataContext = m;
Infobox.Visibility = Visibility.Visible;
MapLayer.SetPosition(Infobox, MapLayer.GetPosition(p));
}
else
{
Infobox.Visibility = Visibility.Collapsed;
}
}
我是否需要坚持使用两个字符串,传递DateTime.ToString()?还是有其他问题吗?
我的不好 - 我没有更新的是XAML;我更改了类成员的名称,忘了更改XAML中的Binding语句。现在它可以工作了(除了位图 - 仍然不知道如何将其压入/将其从字节数组转换为BitmapImage)
答案 0 :(得分:2)
看起来您正在尝试创建一个信息框(工具提示),它会在图钉上方显示一个面板并包含一些信息。这很容易做,这是我在博客和书中多次写过的。以下是关于执行此操作的博文:http://rbrundritt.wordpress.com/2013/06/17/infoboxes-for-native-windows-store-apps/
您可能对我创建位置智能Windows应用商店应用的免费电子书感兴趣。您可以在此处下载其副本:http://rbrundritt.wordpress.com/my-book/