gpt4 book ai didi

javascript - 将 javascript 数组传递到另一个页面

转载 作者:行者123 更新时间:2023-11-29 10:40:55 26 4
gpt4 key购买 nike

我想知道是否有办法将数组及其内容传递给另一个页面以供使用。

我正在使用一个数组来存储用于在谷歌地图上绘制多段线的坐标。该数组在一个页面上工作正常,但是当我尝试调用该数组在另一张 map 上绘制折线点时,该数组似乎已被清空并且没有绘制任何折线点。

我曾尝试将 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

最佳答案

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

您可以使用 session 存储将数据从一个页面传递到下一个页面。或者,您也可以使用以类似方式运行的本地存储。除非 session 关闭时本地存储不会被清除。

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

要存储的数组:

var testArray = ['test'];

存储数组:

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

获取数组:

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

清除 session 存储:

$('#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 中存储的 session :

enter image description here

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

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

演示:

http://jsfiddle.net/mdktpmw2/

支持旧版本的 Internet Explorer:

一些资源:

关于javascript - 将 javascript 数组传递到另一个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29498029/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com