0

Windows Phone 8 アプリケーションを開発しています。ユーザーの現在の位置を表示する画鋲を使用してマップ コントロールを実装する必要があります。現在の位置を画鋲に割り当てています。この画鋲をマップの中央に配置したいと考えています。 . 画鋲を地図の中心に留めるのを手伝ってくれる人はいますか?

<maps:Map x:Name="MyMap" Center="{Binding}" ZoomLevel="15">
        <toolkit:MapExtensions.Children>
            <toolkit:Pushpin x:Name="pushpin1" GeoCoordinate="{Binding}">
                <toolkit:Pushpin.Template>
                    <ControlTemplate TargetType="toolkit:Pushpin">
                        <StackPanel>
                            <ContentPresenter x:Name="content" Content="{TemplateBinding Content}" HorizontalAlignment="Left"></ContentPresenter>
                            <Path Data="M0,0L1,1L2,0L2,0L1,0L0,0Z"
                              Fill="#00AAFF"
                              Stretch="Fill"
                              Margin="-2,0"
                              Height="120"
                              Width="30"
                              Visibility="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content.Visibility, Mode=TwoWay}"
                              HorizontalAlignment="Left"
                              />

                        </StackPanel>
                    </ControlTemplate>
                </toolkit:Pushpin.Template>
            </toolkit:Pushpin>
        </toolkit:MapExtensions.Children>
    </maps:Map>
4

1 に答える 1

2

Windows Phone 8 アプリで Bing マップを使用しますか? WP8 アプリの古い Bing Map コントロールに問題があります。私はそれについて書いたwindows phone 8 古い地図 対 新しい地図. WP 8 の最適なソリューションは、新しい Nokia Map コントロールです。

XAML の場合:

 xmlns:nokiamap="clr-namespace:Microsoft.Phone.Maps.Controls;assembly=Microsoft.Phone.Maps"
    xmlns:toolkit="clr-namespace:Microsoft.Phone.Maps.Toolkit;assembly=Microsoft.Phone.Controls.Toolkit"

<nokiamap:Map Name="NokiaMap">
 <toolkit:MapExtensions.Children>
    <toolkit:Pushpin x:Name="MyPushpin"/>
 </toolkit:MapExtensions.Children>
</nokiamap:Map>

//画鋲の初期化

private Pushpin MyPushpin { get; set; }

ObservableCollection<DependencyObject> children = MapExtensions.GetChildren(NokiaMap);       
    var pin = children.FirstOrDefault(x => x.GetType() == typeof(Pushpin)) as Pushpin;
    MyPushpin = pin;

// ジオロケータを開始

  public void StartGeolocator()
        {
              Geolocator geolocator = new Geolocator();
                geolocator.DesiredAccuracy = PositionAccuracy.High;
                geolocator.MovementThreshold = 10; 
                geolocator.PositionChanged += geolocator_PositionChanged;
                geolocator.StatusChanged += geolocator_StatusChanged;
            }
        }

 private void geolocator_PositionChanged(Geolocator sender, PositionChangedEventArgs args)
    {
       myGeoposition = new GeoCoordinate()
       {
            Latitude = args.Position.Coordinate.Latitude,
            Longitude = args.Position.Coordinate.Longitude,
       }
       MyPushpin.GeoCoordinate = myGeoposition;
       NokiaMap.SetView(myGeoposition, NokiaMap.ZoomLevel);
    }

あなたのコードを参照してください

void geolocator_PositionChanged(Geolocator sender, PositionChangedEventArgs args)
{
    Dispatcher.BeginInvoke(() =>
    {
        ObservableCollection<DependencyObject> children = MapExtensions.GetChildren(MyMap);       
        var pin = children.FirstOrDefault(x => x.GetType() == typeof(Pushpin)) as Pushpin;        
        pin.DataContext = args.Position.Coordinate;
        //witout binding 
        //pin.GeoCoordinate = args.Position.Coordinate;
    });
}
于 2013-09-30T10:44:05.880 に答える