将javascript数组传递给另一个页面

我想知道是否有一种方法可以将数组及其内容传递给另一个页面使用.

我正在使用数组来存储坐标,该坐标用于在Google地图上绘制折线.该数组在一页上工作正常,但是,当我尝试调用该数组在另一张地图上绘制折线点时,该数组似乎已清空,并且未绘制任何折线点.

我尝试将localStorage与JSON stringify一起使用,但是遇到了许多问题,其中Google Maps不接受以太值,因为它们包含了它不期望的值,或者因为它根本无法识别格式.

var googleLatLng = [],
    latlngs = [];

function storeLatLng( lat, lng ) {
    googleLatLng.push(new google.maps.LatLng(lat, lng));
    latlngs.push([lat, lng]);

        // setcoords = JSON.stringify(googleLatLng);
        // localStorage.setItem('GoogleLatLng', setcoords);

        // console.log(localStorage.getItem("GoogleLatLng"));

        console.log(googleLatLng);
}

这段代码根据给定的坐标构建数组,该函数在watchPosition函数的onSuccess内部通过以下方式调用

        storeLatLng(lat, lon);

然后,我想在以下函数中使用数组值

function finishedWalk() {
        // storedCoords = localStorage.getItem('GoogleLatLng');
        // if(storedCoords) storedCoords = JSON.parse(storedCoords);
        navigator.geolocation.getCurrentPosition(onFinishedSuccess, onFinishedError);
}

    function onFinishedSuccess(position) {

    var latitude = position.coords.latitude;
    var longitude = position.coords.longitude;
    coords = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);

    storeLatLng(latitude, longitude);

        var mapOptions = {
            zoom: 17,
            center: coords,
            mapTypeControl: true,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };

        //create the map, and place it in the HTML map div
        map = new google.maps.Map(document.getElementById("mapPlaceholder"), mapOptions);

        if (googleLatLng.length > 0) {
          var path = new google.maps.Polyline({
            path: googleLatLng,
            strokeColor: "#FF0000",
            strokeOpacity: 1.0,
            strokeWeight: 5
          });
          path.setMap(map);
        }
}

称为另一页的onLoad

解决方法:

使用会话存储或本地存储传递数据:(基本示例)

您可以使用会话存储将数据从一页传递到下一页.或者,您也可以使用行为类似的本地存储.会话关闭时,除本地存储外不会被清除.

对于本地存储,只需将sessionStorage替换为localStorage.

数组存储:

var testArray = ['test'];

存储阵列:

$('#store').on('click', function(){
    sessionStorage.setItem('myArray', testArray);
});

获取数组:

$('#get').on('click', function(){
    var myArray = sessionStorage.getItem('myArray');
    alert(myArray);
});

清除会话存储:

$('#clear').on('click', function(){
    sessionStorage.clear();
});

HTML:

<a href="javascript:void(0);" id="store">Store Array</a>
<a href="javascript:void(0);" id="get">Get Array</a>
<a href="javascript:void(0);" id="clear">Clear</a>

检查以查看Chrome中存储的会话:

如果存储字符串化数据,请确保转换回JSON:

var mydata = localStorage.getItem("GoogleLatLng");
var myObject = JSON.parse(mydata);

演示:

http://jsfiddle.net/mdktpmw2/

支持较旧版本的Internet Explorer:

> http://modernizr.com/docs/
> https://github.com/pamelafox/lscache
> http://amplifyjs.com/

一些资源:

> http://caniuse.com/#feat=namevalue-storage
> http://davidwalsh.name/html5-storage

上一篇:使用Cordova如何获取Android设备上已安装的应用程序列表?


下一篇:javascript-Epub.js-由于Blob URI,Phonegap无法正常工作