首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pushpin为空

Pushpin为空
EN

Stack Overflow用户
提问于 2014-08-14 22:50:55
回答 1查看 128关注 0票数 6

我有一个带有两个图钉的地图,当我加载页面时,我在后面的代码中设置一个图钉的位置。然而,当我试图引用引脚时,它是空的。

XAML

代码语言:javascript
复制
 <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#

代码语言:javascript
复制
    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。

在此之前,用

代码语言:javascript
复制
Pushpin pin = (Pushpin)this.FindName("userLocationPin");

这对模拟器有效,但在真正的手机上就不行了。

我试着在一个图层中手工制作图钉,但是图钉到了拐角处。

代码语言:javascript
复制
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);

任何想法都将不胜感激。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-18 23:36:45

我不知道是什么问题,但这里有几件事值得尝试:

  • 使用OnApplyTemplate而不是Loaded (如果问题在于加载/应用子模板的时间问题):

代码语言:javascript
复制
public override void OnApplyTemplate()
{
    Pushpin pin = (Pushpin)this.FindName("userLocationPin");
}
  • 使用附加的属性引用获取元素(如果问题与显像管分辨率有某种关系,这将有所帮助):

代码语言:javascript
复制
public override void OnApplyTemplate()
{
    PushPin pin = MapExtensions.GetChildren(mapEventLocation)
        .FirstOrDefault() as Pushpin;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25318807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档