gpt4 book ai didi

c# - Silverlight - 通过 C# 将文本添加到 Bing map 中的图钉

转载 作者:太空狗 更新时间:2023-10-29 23:04:12 27 4
gpt4 key购买 nike

我能够让我的 silverlight Bing map 接受鼠标点击并将它们转换为 C# 中的图钉。现在我想在 PushPin 旁边显示一个文本作为鼠标经过图钉时出现的描述,我不知道该怎么做。有什么方法可以让我做这件事?

这是 C# 代码:

public partial class MainPage : UserControl

{ 私有(private) map 层 m_PushpinLayer;

public MainPage()
{
InitializeComponent();
base.Loaded += OnLoaded;
}

private void OnLoaded(object sender, RoutedEventArgs e)
{
base.Loaded -= OnLoaded;

m_PushpinLayer = new MapLayer();
x_Map.Children.Add(m_PushpinLayer);
x_Map.MouseClick += OnMouseClick;
}

private void AddPushpin(double latitude, double longitude)
{
Pushpin pushpin = new Pushpin();
pushpin.MouseEnter += OnMouseEnter;
pushpin.MouseLeave += OnMouseLeave;
m_PushpinLayer.AddChild(pushpin, new Location(latitude, longitude), PositionOrigin.BottomCenter);
}

private void OnMouseClick(object sender, MapMouseEventArgs e)
{
Point clickLocation = e.ViewportPoint;
Location location = x_Map.ViewportPointToLocation(clickLocation);
AddPushpin(location.Latitude, location.Longitude);
}

private void OnMouseLeave(object sender, MouseEventArgs e)
{
Pushpin pushpin = sender as Pushpin;

// remove the pushpin transform when mouse leaves
pushpin.RenderTransform = null;
}

private void OnMouseEnter(object sender, MouseEventArgs e)
{
Pushpin pushpin = sender as Pushpin;

// scaling will shrink (less than 1) or enlarge (greater than 1) source element
ScaleTransform st = new ScaleTransform();
st.ScaleX = 1.4;
st.ScaleY = 1.4;

// set center of scaling to center of pushpin
st.CenterX = (pushpin as FrameworkElement).Height / 2;
st.CenterY = (pushpin as FrameworkElement).Height / 2;

pushpin.RenderTransform = st;
}

最佳答案

您有 2 条路可走:

(1) 创建任何 UIElement 以传递给 PushPinLayer.AddChild。 AddChild 方法将接受任何 UIElement,例如这个包含 Image 和 TextBlock 的 Grid:

MapLayer m_PushpinLayer = new MapLayer(); 
Your_Map.Children.Add(m_PushpinLayer);
Image image = new Image();
image.Source = ResourceFile.GetBitmap("Images/Pushpin.png", From.This);
TextBlock textBlock = new TextBlock();
textBlock.Text = "My Pushpin";
Grid grid = new Grid();
grid.Children.Add(image);
grid.Children.Add(textBlock);

m_PushpinLayer.AddChild(grid,
new Microsoft.Maps.MapControl.Location(42.658, -71.137),
PositionOrigin.Center);

(2) 创建一个 native PushPin 对象以传递给 PushpinLayer.AddChild,但首先设置它的 Template 属性。请注意,PushPin 是 ContentControl,并且具有可从 XAML 中定义的资源中设置的模板属性:

MapLayer m_PushpinLayer = new MapLayer(); 
Your_Map.Children.Add(m_PushpinLayer);
Pushpin pushpin = new Pushpin();
pushpin.Template = Application.Current.Resources["PushPinTemplate"]
as (ControlTemplate);
m_PushpinLayer.AddChild(pushpin,
new Microsoft.Maps.MapControl.Location(42.658, -71.137),
PositionOrigin.Center);

...

<ResourceDictionary 
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
>
<ControlTemplate x:Key="PushPinTemplate">
<Grid>
<Image Source="Images/Pushpin.png" />
<TextBlock Text="My Pushpin" />
</Grid>
</ControlTemplate>
</ResourceDictionary>

祝你好运,吉姆麦柯迪

面对面软件和阴阳钱

关于c# - Silverlight - 通过 C# 将文本添加到 Bing map 中的图钉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2805355/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com