将地理坐标分配给图钉

时间:2013-02-14 17:50:48

标签: windows-phone-7 map windows-phone-8 silverlight-toolkit pushpin

伙计们我真的需要你的帮助,我有一张地图

xmlns:maps="clr-namespace:Microsoft.Phone.Maps.Controls;assembly=Microsoft.Phone.Maps"
xmlns:maptk="clr-namespace:Microsoft.Phone.Maps.Toolkitassembly=Microsoft.Phone.Controls.Toolkit"

         <maps:Map Grid.Row="0"  Tap="Onm_MapControlTap" Name="m_MapControl
            <maptk:MapExtensions.Children>
                <maptk:Pushpin x:Name="m_PushPin" Tap="OnPushPinTap">
                  <maptk:Pushpin.Content>
                    <StackPanel>                        
                            <TextBlock Text=""/>
                            <Image Source=""/>
                    </StackPanel>
                </maptk:Pushpin.Content>
            </maptk:Pushpin>
           </maptk:MapExtensions.Children>
        </maps:Map>

当我有来自geowatcher的坐标时,或者当我点击地图时,我想将这些坐标添加到我的图钉中。

  

m_PushPin.GeoCoordinate = m_watcher.Position.Location;

m_PushPin发生了'System.NullReferenceException'类型的异常,我无法理解为什么这个PushPin为空。你能告诉我我做错了什么,我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

这是XAML Parser的一个已知问题。由于PushPin嵌套在附加依赖项属性(MapExtensions.Children)中,因此它不会与UserControl属于同一逻辑树,因此不会被该范围内的FindName拾取。

相反,您应该手动遍历可视树并获得所需的控件。幸运的是,地图控件只为这种场合提供了辅助方法。

    var pushpin = MapExtensions.GetChildren(myMap).OfType<Pushpin>().First(p => p.Name == "m_PushPin");

答案 1 :(得分:1)

作为替代方案,您可以使用绑定将一些GeoCoordinate绑定到您的图钉。

相关问题