如何将坐标列表保存到独立存储
本文关键字:独立 存储 保存 列表 坐标 | 更新日期: 2023-09-27 17:51:12
我有一个GeoCoordinate列表,我想保存到存储时,应用程序关闭,但我不确定如何保存到存储
我尝试使用一个helper类保存列表在这里发现的问题在隔离存储中存储对象列表,但我认为我的语法可能是错误的保存它,因为我是新的使用列表。这就是我保存列表的方法。有谁能告诉我怎么救灯吗?
mycoord = Isolated_Storage_Helper.IsoStoreHelper
.SaveList<mycoord>("Storage_Folder/", "Storage");
它给我一个错误,说明mycoord is a field but is used as a type
mycoord
是在全局级别创建的坐标列表:
List<GeoCoordinate> mycoord = new List<GeoCoordinate>();
并在OnNavigatedTo方法中填充:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (NavigationContext.QueryString.ContainsKey("GeoLat") &&
NavigationContext.QueryString.ContainsKey("GeoLong") &&
NavigationContext.QueryString.ContainsKey("pName"))
{
if (mycoord.Count >= 2)
{
//do something,draw route between points
return;
}
else
{
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);
mycoord.Add(MyGeoPosition);
}
}
base.OnNavigatedTo(e);
}
首先创建一个自定义的可序列化对象
[DataContractAttribute]
public class GeoPostionObj{
[DataMember]
Double lat {get;set;}
[DataMember]
Double lon {get; set;}
public GeoPositionObj(double lat, double lon){
this.lat = lat;
this.lon = lon;
}
}
现在你可以初始化并保存这个对象
//Where you want to save it
//We assume you already have your lat and lon retrieved
GeoPositionObj saveObj = new GeoPositionObj(lat,lon);
EZ_Iso.IsolatedStorageAccess.SaveFile("GeoPos",saveObj);
//Then to retrieve
GeoPositionObj retrievedObj = (GeoPositionObj)EZ_Iso.IsolatedStorageAccess.GetFile("GeoPos",typeof(GeoPositionObj));
你可以在这里找到EZ_Iso.dll http://anthonyrussell.info/postpage.php?name=2
如果你对它的工作原理感兴趣,DLL是免费的,包括文档和源代码。
如果你有任何问题请告诉我
首先创建坐标类:
[DataContract]
class coord{
[DataMember]
public double lat{get;set;}
[DataMember]
public double lon{get;set;}
}
现在如果你想保存一个List<coord>
,你可以这样做:
DataContractSerializer ser = new DataContractSerializer(typeof(List<coord>));
ser.WriteObject(any_file_stream, instance_of_List<coord>);
但是如果你只想保存几个坐标,而不是一个列表isolatedstoragesset将是一个更好的选择