如何获得触摸MapPin的格度?

时间:2015-04-28 05:50:48

标签: c# xaml windows-phone-8.1

我们需要允许触摸MapPin的功能。并在触摸时,在当前位置和触摸笔之间绘制路线。触摸针来自xml文件并绑定到地图控件。

以下是我的代码。

我收到错误

Error: BindingExpression path error: 'Latitude' property not found on 'MapPin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. BindingExpression: Path='Latitude' DataItem='MapPin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'; target element is 'Windows.UI.Xaml.Controls.TextBlock' (Name='txtLatitude'); target property is 'Text' (type 'String')

XAML:

<map:MapControl x:Name="map1" 
                    LandmarksVisible="True"
                        Loaded="map1_Loaded">
            <map:MapItemsControl x:Name="MapItems" >
                <map:MapItemsControl.ItemTemplate>
                    <DataTemplate>
                        <StackPanel x:Name="stckPin" HorizontalAlignment="Left" Height="100" VerticalAlignment="Top" Width="100" Tapped="stckPin_Tapped">
                            <Image x:Name="imgPin" Source="ms-appx:///Assets/icon.png"
                            map:MapControl.Location="{Binding Location}" Opacity="0.8"
                            map:MapControl.NormalizedAnchorPoint="{Binding NAP}"
                            Height="50" Width="50" />
                            <TextBlock x:Name="txtLatitude" TextWrapping="Wrap" Text="{Binding Latitude, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource DoubleConverter1}}" />
                        </StackPanel>
                    </DataTemplate>
                </map:MapItemsControl.ItemTemplate>
            </map:MapItemsControl>
        </map:MapControl>

C#:

namespace MapLocatorNamespace
{
    public sealed partial class MapLocator : Page
    {
        private void stckPin_Tapped(object sender, TappedRoutedEventArgs e)
        {
            StackPanel stkPin = (StackPanel)sender;
            double loLatitude = Convert.ToDouble(((TextBlock)stkPin.Children[1]).Text);
        }
    }
    public class DoubleConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, string language)
        {
            var doubleNumber = (double)value;
            return doubleNumber.ToString("0.00#################");
        }

        public object ConvertBack(object value, Type targetType, object parameter, string language)
        {
            throw new NotImplementedException();
        }
    }
}

如何将Latitude绑定到textblock并在codebehind处获取?

1 个答案:

答案 0 :(得分:0)

我自己解决了这个问题,

我所做的是, 我已将int column index添加到mapitem类中,并将其添加到image的'Tag'属性中。 在Tap事件上我得到这个标签,从这个索引我可以在我的列表中搜索并获得点击引脚。

现在我有Pin整个细节,从当前位置和这个引脚位置我可以绘制路线。

谢谢。