如何保存一个坐标列表后,应用程序是墓碑

本文关键字:列表 应用程序 墓碑 坐标 何保存 保存 一个 | 更新日期: 2023-09-27 17:53:00

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

这就是我目前如何在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();
}

如何保存一个坐标列表后,应用程序是墓碑

最简单的自定义方法是创建一个自定义对象,并使用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));

你可以在这里找到免费的EZ_Iso.dll http://anthonyrussell.info/postpage.php?name=2

使用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
 }

您可以创建一些简单的内容,如:

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());