Silverlight 4和Windows Phone 7的Bing地图控件中的交互式图层 [英] Interactive layers in Bing map control for Silverlight 4 and Windows Phone 7

查看:172
本文介绍了Silverlight 4和Windows Phone 7的Bing地图控件中的交互式图层的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当使用Bing地图控件时,我的应用程序会添加一个叠加层,将位置标记绘制为椭圆。每个椭圆连接到在WP7模拟器中按预期工作的抽头处理程序。可悲的是,HTC硬件似乎并非如此 - 地图本身似乎抓住了所有的输入。有人知道我如何解决这个问题。更好的是有一个交互式图层的工作示例?

When using the Bing map control my app adds an overlay on which to draw position markers as ellipses. Each ellipse is wired to a tap handler which works as expected in the WP7 emulator. Sadly this does not seem to be the case on HTC hardware - the map itself seems to grab all input. Does anyone know how I can fix this. Better still is there a working example with interactive layers?

Thx ++

推荐答案

p>如果您使用Visual Studio 2010中的默认模板创建新的windows phone 7.1 silverlight应用程序,那么只需将以下内容复制到MainPage.xaml和MainPage.cs文件中即可。您还需要参考System.Device和Microsoft.Phone.Controls.Maps Dll。这应该允许您单击省略号。我已经测试了两个不同的WP7手机,它的工作正常。

If you create a new windows phone 7.1 silverlight application using the default template in Visual Studio 2010, then just copy the following into the MainPage.xaml and MainPage.cs files. You will need to reference the System.Device and Microsoft.Phone.Controls.Maps Dlls as well. This should allow you to click on the ellipses. I have tested it on two different WP7 phones and it works fine.

<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



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地图控件中的交互式图层的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆