Silverlight 4 和 Windows Phone 7 的 Bing 地图控件中的交互式图层
Posted
技术标签:
【中文标题】Silverlight 4 和 Windows Phone 7 的 Bing 地图控件中的交互式图层【英文标题】:Interactive layers in Bing map control for Silverlight 4 and Windows Phone 7 【发布时间】:2011-08-09 16:02:59 【问题描述】:当使用 Bing 地图控件时,我的应用程序添加了一个叠加层,在该叠加层上将位置标记绘制为椭圆。每个椭圆都连接到一个抽头处理程序,该处理程序在 WP7 仿真器中按预期工作。遗憾的是,在 HTC 硬件上似乎并非如此——地图本身似乎获取了所有输入。有谁知道我该如何解决这个问题。更好的是,有交互式图层的工作示例吗?
谢谢++
【问题讨论】:
椭圆被填满了吗? 【参考方案1】:如果您使用 Visual Studio 2010 中的默认模板创建新的 windows phone 7.1 silverlight 应用程序,则只需将以下内容复制到 MainPage.xaml 和 MainPage.cs 文件中。您还需要引用 System.Device 和 Microsoft.Phone.Controls.Maps Dll。这应该允许您单击省略号。我在两款不同的 WP7 手机上测试过,效果很好。
Xaml
<phone:PhoneApplicationPage
x:Class="SampleMapApp.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:maps="clr-namespace:Microsoft.Phone.Controls.Maps;assembly=Microsoft.Phone.Controls.Maps"
mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
FontFamily="StaticResource PhoneFontFamilyNormal"
FontSize="StaticResource PhoneFontSizeNormal"
Foreground="StaticResource PhoneForegroundBrush"
SupportedOrientations="Portrait" Orientation="Portrait"
shell:SystemTray.IsVisible="True">
<phone:PhoneApplicationPage.Resources>
<DataTemplate x:Name="EllipseTemplate">
<maps:Pushpin Location="Binding" Tap="Pushpin_Tap">
<maps:Pushpin.Template>
<ControlTemplate>
<Ellipse Width="15" Height="15" Stroke="White" StrokeThickness="2">
<Ellipse.RenderTransform>
<TranslateTransform X="-5" Y="5"/>
</Ellipse.RenderTransform>
<Ellipse.Fill>
<SolidColorBrush Color="DarkBlue" Opacity="0.8"/>
</Ellipse.Fill>
</Ellipse>
</ControlTemplate>
</maps:Pushpin.Template>
</maps:Pushpin>
</DataTemplate>
</phone:PhoneApplicationPage.Resources>
<!--LayoutRoot is the root grid where all page content is placed-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="5">
<TextBlock Text="Sample Map Application" Style="StaticResource PhoneTextNormalStyle"/>
</StackPanel>
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="0">
<maps:Map>
<maps:MapLayer>
<maps:MapItemsControl ItemsSource="Binding Locations" ItemTemplate="StaticResource EllipseTemplate"/>
</maps:MapLayer>
<maps:Pushpin Location="Binding CurrentLocation, Mode=TwoWay" Content="Binding CurrentLocation, Mode=TwoWay"/>
</maps:Map>
</Grid>
</Grid>
</phone:PhoneApplicationPage>
CS
using System.Collections.ObjectModel;
using System.Device.Location;
using System.Windows;
using System.Windows.Input;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Controls.Maps;
namespace SampleMapApp
public partial class MainPage : PhoneApplicationPage
// Constructor
public MainPage()
InitializeComponent();
Locations = new ObservableCollection<GeoCoordinate>()
new GeoCoordinate(-56, 73),
new GeoCoordinate(-14, 120),
new GeoCoordinate(48, -133),
new GeoCoordinate(-2, 11),
new GeoCoordinate(0, 40),
new GeoCoordinate(-78, -85),
;
CurrentLocation = Locations[0];
DataContext = this;
public ObservableCollection<GeoCoordinate> Locations get; set;
#region CurrentLocation
public GeoCoordinate CurrentLocation
get return (GeoCoordinate) GetValue(CurrentLocationProperty);
set SetValue(CurrentLocationProperty, value);
public static readonly DependencyProperty CurrentLocationProperty =
DependencyProperty.Register("CurrentLocation", typeof(GeoCoordinate), typeof(MainPage), new PropertyMetadata(null));
#endregion
private void Pushpin_Tap(object sender, GestureEventArgs e)
CurrentLocation = (sender as Pushpin).Location;
【讨论】:
以上是关于Silverlight 4 和 Windows Phone 7 的 Bing 地图控件中的交互式图层的主要内容,如果未能解决你的问题,请参考以下文章
MSBuild命令行错误 - 未安装Silverlight 4 SDK
如何托管 Windows Workflow 4“工作流设计器”?是不是支持 Silverlight 或 Click 一次?
在 Silverlight 中使用表单进行 Windows 身份验证 [重复]
Windows 8 运行时(WinRT/Windows 应用商店应用程序/Windows 10 通用应用程序)与 Silverlight 和 WPF 相比如何? [关闭]