我试图将Google Map的中心点存储到cookie中,并在下次加载页面时将地图恢复到最后位置。序列化GoogleMapsLatLng并存储在cookie中
当然,我可以将经度和纬度保存为一个字符串或序列化数组或其他东西,但我很好奇,如果我只能将JSON序列化到谷歌地图LatLng对象的cookie,然后只是在一个晚点。
我使用jQuery和这个库:http://code.google.com/p/cookies/
我从地图上设置Cookie用经纬度:
$.cookies.set('map_center', map.getCenter());
,然后我试着读出来期待的序列化/反序列化会恢复我的对象...
var centerpointFromCookie = $.cookies.get('map_center);
map.setCenter(centerpointFromCookie);
但它似乎没有保留对象类型。在脚本控制台,这是经纬度对象是什么样子之前,它是序列化,并存储在cookie:
map.getCenter()
O
$a: 151.21950000000004
Za: -33.8688
__proto__: O
constructor: function O(a, b, c) {a-=0;b-=0;c||(a=Bd(a,-90,90),b=Cd(b,-180,180));this.Za=a;this.$a=b;}
equals: function (a) {return!a?k:Dd(this.lat(),a.lat())&&Dd(this.lng(),a.lng());}
lat: function() {return this[a];}
lng: function() {return this[a];}
toString: function() {return"("+this.lat()+", "+this.lng()+")";}
toUrlValue: function (a) {a=Hd(a)?a:6;return ae(this.lat(),a)+","+ae(this.lng(),a);}
__proto__: Object
而这正是它看起来像算账:
centerpointFromCookie
Object
$a: 151.21950000000004
Za: -33.8688
__proto__: Object
__defineGetter__: function __defineGetter__() {
__defineSetter__: function __defineSetter__() {
__lookupGetter__: function __lookupGetter__() {
__lookupSetter__: function __lookupSetter__() {
constructor: function Object() {
hasOwnProperty: function hasOwnProperty() {
isPrototypeOf: function isPrototypeOf() {
propertyIsEnumerable: function propertyIsEnumerable() {
toLocaleString: function toLocaleString() {
toString: function toString() {
valueOf: function valueOf() {
我需要投反序列化时,该对象是否为GoogleMapsLatLng类型?我知道我可以存储这些值,但我想了解如何正确地将这样的小对象序列化为cookie。
即使这是可能的,您将依靠实施细节。你不应该。这可能意味着您的应用程序可能会在未来中断。 我会(并且实际上在过去具有完全相同的东西)只需坚持将经度和纬度存储在cookie中。当然,如果仅仅是因为好奇心而推动你的问题,那没有什么可以反对的。 – Jasper 2012-04-20 20:17:57