我有一个带有两个图钉的地图,当我加载页面时,我在后面的代码中设置一个图钉的位置。然而,当我试图引用引脚时,它是空的。
XAML
<maps:Map x:Name="mapEventLocation" ZoomLevel="15" Grid.Row="1" Tap="mapEventLocation_Tap" >
<maptoolkit:MapExtensions.Children>
<maptoolkit:Pushpin x:Name="userLocationPin" Content="You" Visibility="Collapsed" />
<maptoolkit:Pushpin x:Name="eventLocationPin" Content="Event" Visibility="Collapsed" />
</maptoolkit:MapExtensions.Children>
</maps:Map>C#
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
if (this.NavigationContext.QueryString.ContainsKey("lat"))
{
userLocationPin.GeoCoordinate = new GeoCoordinate(double.Parse(this.NavigationContext.QueryString["lat"]), double.Parse(this.NavigationContext.QueryString["lon"]));
userLocationPin.Visibility = System.Windows.Visibility.Visible;
mapEventLocation.Center = new GeoCoordinate(double.Parse(this.NavigationContext.QueryString["lat"]), double.Parse(this.NavigationContext.QueryString["lon"]));
}
}Lat和Lon绝对在QueryString。
在此之前,用
Pushpin pin = (Pushpin)this.FindName("userLocationPin");这对模拟器有效,但在真正的手机上就不行了。
我试着在一个图层中手工制作图钉,但是图钉到了拐角处。
Pushpin userLocation = new Pushpin();
userLocation.GeoCoordinate = new GeoCoordinate(double.Parse(this.NavigationContext.QueryString["lat"]), double.Parse(this.NavigationContext.QueryString["lon"]));
userLocation.Content = "You";
MapLayer layer = new MapLayer();
MapOverlay overlay = new MapOverlay();
overlay.Content = userLocation;
layer.Add(overlay);
mapEventLocation.Layers.Add(layer);任何想法都将不胜感激。谢谢
发布于 2014-08-18 23:36:45
我不知道是什么问题,但这里有几件事值得尝试:
OnApplyTemplate而不是Loaded (如果问题在于加载/应用子模板的时间问题):public override void OnApplyTemplate()
{
Pushpin pin = (Pushpin)this.FindName("userLocationPin");
}public override void OnApplyTemplate()
{
PushPin pin = MapExtensions.GetChildren(mapEventLocation)
.FirstOrDefault() as Pushpin;
}https://stackoverflow.com/questions/25318807
复制相似问题