如何保存一个坐标列表后,应用程序是墓碑
本文关键字:列表 应用程序 墓碑 坐标 何保存 保存 一个 | 更新日期: 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());