2014-03-24 21 views
1

我试图将地图上的图钉保存到应用程序设置中,以便在应用程序关闭后加载它们,但我不确定如何从存储中检索变量。有谁知道如何在保存后将图钉重新加载到地图上?如何从应用程序设置中检索GeoCoordinate类型的变量? Windows Phone

这是我到目前为止已经试过,我保存图钉独立存储它们添加到地图中OnNavigatedTo

protected override void OnNavigatedTo(NavigationEventArgs e) 
     { 
      if (NavigationContext.QueryString.ContainsKey("GeoLat") && NavigationContext.QueryString.ContainsKey("GeoLong") && NavigationContext.QueryString.ContainsKey("pName")) 
      { 
        var latitude = Convert.ToDouble(NavigationContext.QueryString["GeoLat"]); 
        var longtitude = Convert.ToDouble(NavigationContext.QueryString["GeoLong"]); 
        var MyGeoPosition = new GeoCoordinate(latitude, longtitude); 
        var pushPinName = NavigationContext.QueryString["pName"]; 

        DrawPushPin(MyGeoPosition, pushPinName); 
        appSettings.Add("pushPin", MyGeoPosition);  

      } 

      base.OnNavigatedTo(e); 
     } 

后,然后我尝试在页面加载像检索图钉这个,但是下面的错误被抛出。我明白MyGeoPosition只能在OnNavigatedTo内看到,所以我不能引用它,是否有其他方法来检索它? :

private void PhoneApplicationPage_Loaded_1(object sender, RoutedEventArgs e) 
     { 
      MyMap.MapElements = (var)appSettings[MyGeoPosition]; 
     } 

Error 1 The contextual keyword 'var' may only appear within a local variable declaratio 
Error 2 The name 'MyGeoPosition' does not exist in the current context 

回答

3

既然你使用你想使用相同的密钥来检索应用程序设置键“图钉”添加位置的appSettings。您还需要将其投射到GeoCoordinate,而不是'var'。

private GeoCoordinate MyGeoPosition;  

private void PhoneApplicationPage_Loaded_1(object sender, RoutedEventArgs e) 
{ 
    MyGeoPosition = (GeoCoordinate)appSettings["pushPin"]; 
} 
+0

'MyGeoPosition不会在当前context'存在的问题是MyGeoPosition仅可见的OnNavigatedTo method.How我让它全球化,所以它可以在任何地方在课堂上使用? –

+0

在特定函数范围外定义MyGeoPosition,并且该类将在该类中的任何位置访问。 – robwirving

+0

@BrianJ public static GeoCoordinate MyGeoPosition = new GeoCoordinate(0,0);在你的App.xaml.cs文件中定义。 – Jaihind

相关问题