C#Xamarin:JsonConvert将PointF设置为(0,0)

时间:2017-01-20 00:08:11

标签: c# xamarin

运行点列表会保存到共享首选项中,以后应该检索。所有数据,除了PointF类型列表和两个参数“start”&正确检索“end”(两种类型的PointF)。每个点都被检索为PointF(0,0),而实际数据是PointF(139000.0,455000.0)

结果:

runpoint save: PointF(139000.0, 455000.0)
runpoint load: PointF(0.0, 0.0)

要保存运行点,我使用JsonConvert.SerializeObject。我发现在其他问题上,解决方案是提供JsonSerializerSettings并将TypeNameHandling设置为All。然而,这并没有对结果产生影响。

我提供了保存和加载代码。您可以在下面找到我的TrackSpec类的蓝图:

//Saving
TrackSpec activeTrack = runView.getTrack();
ISharedPreferences sharedPrefs = PreferenceManager.GetDefaultSharedPreferences(this); 
ISharedPreferencesEditor editor = sharedPrefs.Edit();

for (int i = 0; i < activeTrack.path.Count; i++)
{
    Console.WriteLine("runpoint save: " + activeTrack.path[i].point);
}


JsonSerializerSettings serializeSettings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All };
string toSave = JsonConvert.SerializeObject(activeTrack, Formatting.Indented, serializeSettings);
editor.PutString(routeNameInput, toSave);
editor.Apply();


//Load
ISharedPreferences sharedPrefs = PreferenceManager.GetDefaultSharedPreferences(this);
string json = sharedPrefs.GetString(routeName, "default");
TrackSpec trackObj = JsonConvert.DeserializeObject<TrackSpec>(json, serializeSettings);
for (int i = 0; i < trackObj.path.Count; i++)
{
    Console.WriteLine("runpoint load: " + trackObj.path[i].point);
}
runView.setTrack(trackObj);

TrackSpec:

public class TrackSpec
 {
        public string routeName;
        public List<TimeGeoPoint> path;
        public float distance;
        public string pace;
        public float speed;
        public PointF start;
        public PointF end;
        public DateTime date;

  public TrackSpec(string routeName, List<TimeGeoPoint> path, float distance, string pace, float speed, PointF start, PointF end, DateTime date)
    {
        this.routeName = routeName;
        this.path = path;
        this.distance = distance;
        this.pace = pace;
        this.speed = speed;
        this.start = start;
        this.end = end;
        this.date = date;
    }
}

0 个答案:

没有答案