如何在应用程序被逻辑删除后保存坐标列表?

时间:2014-03-25 15:28:07

标签: c# windows-phone-8 coordinates tombstoning

我有一个保存在地图类中的坐标列表,这些坐标被操纵以在点之间绘制路线,但我不确定在关闭应用程序然后重新打开时如何保存这些点。

这就是我目前在OnNavigatedTo()中保存应用中的积分的方式,只要我不关闭它们,积分和标记就不会丢失。但是关闭应用程序后如何保存这些坐标?

我猜我应该将它们保存在OnNavigatedFrom中,但我尝试在此处保存坐标列表,并且当我重新打开应用时标记不会显示。

//save the coordinates to a list
mycoord.Add(new GeoCoordinate(MyGeoPosition.Latitude, MyGeoPosition.Longitude));

if (mycoord.Count == 2)
{
  //call route method when coord list equal to two.
  GetRoute();
}

3 个答案:

答案 0 :(得分:1)

使用Tombstone Helper http://tombstonehelper.codeplex.com/

protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
 {
this.SaveState(e);  // <- first line
 }

protected override void OnNavigatedTo(NavigationEventArgs e)
 {
this.RestoreState();  // <- second line
 }

答案 1 :(得分:1)

可自定义的最简单方法是创建自定义对象,并使用EZ_Iso.dll

将其序列化到手机的存储空间中

这是一个例子

//Your custom GeoCoord container
[DataContractAttribute]
public class GeoCoordContainer{
  [DataMember]
  public double lat = 0;

  [DataMember]
  public double lon = 0;

  public GeoCoordContainer(Double lat, Double lon){
    this.lat = lat;
    this.lon = lon;
  }
}


//Then in your Navigated from method
  GeoCoordContainer cont = new GeoCoordContainer(MyGeoPosition.Lattitude,MyGeoPosition.Longitued);

  //Now save it to the storage using EZ_Iso
  EZ_Iso.IsolatedStorageAccess.SaveFile("MyLocation",cont);


 //To Retrieve it from storage 
  GeoCoordContainer cont = (GeoCoordContainer)EZ_Iso.IsolatedStorageAccess.GetFile("MyLocation",typeof(GeoCoordContainer));

您可以在http://anthonyrussell.info/postpage.php?name=2

免费找到EZ_Iso.dll

答案 2 :(得分:1)

您可以创建简单的内容:

PhoneApplicationService.Current.State["latitude"] = MyGeoPosition.Latitude;
PhoneApplicationService.Current.State["longitude"] = MyGeoPosition.Longitude;

稍后将其视为:

var lat=PhoneApplicationService.Current.State["latitude"];
var lng=PhoneApplicationService.Current.State["longitude"];

你也可以尝试:

private IsolatedStorageSettings appSettings = IsolatedStorageSettings.ApplicationSettings;
appSettings.Add("latitude", MyGeoPosition.Latitude.ToString());