Javascript 如何阅读&;使用java脚本解析文件?
这是我的代码,我正在读取一个包含纬度和经度的文件,我正在数组中存储文件内容。但我不想将其存储在数组中,是否有其他选项可以存储和处理它 我在for循环中用这些lat&lon生成一个映射,我将它们传递给一个函数,在一个数组中,你不能给出延迟,所以我需要其他方法 这是我的密码:Javascript 如何阅读&;使用java脚本解析文件?,javascript,Javascript,这是我的代码,我正在读取一个包含纬度和经度的文件,我正在数组中存储文件内容。但我不想将其存储在数组中,是否有其他选项可以存储和处理它 我在for循环中用这些lat&lon生成一个映射,我将它们传递给一个函数,在一个数组中,你不能给出延迟,所以我需要其他方法 这是我的密码: function FileHelper() {} { FileHelper.readStringFromFileAtPath = function(pathOfFileToReadFrom)
function FileHelper()
{}
{
FileHelper.readStringFromFileAtPath = function(pathOfFileToReadFrom)
{
var request = new XMLHttpRequest();
request.open("GET", pathOfFileToReadFrom, false);
request.send(null);
var returnValue = request.responseText;
return returnValue;
}
}
var pathOfFileToRead = "LatLon.txt";
var contentsOfFileAsString = FileHelper.readStringFromFileAtPath
(
pathOfFileToRead
);
**var contentsArray=new Array();
var contentsArray = contentsOfFileAsString.split('\n');**
function main()
{
for(i=0;i<contentsArray.length;i++)
{
addMarker();
// setTimeout(function() { remveh1();}, 2000);
}
}
function addMarker()
{
console.log(contentsArray[i]);
split_contentArray=contentsArray[i].split(',');
vehicle_lat=split_contentArray[0];
vehicle_lng=split_contentArray[1];
var vehicle = new MQA.Poi({ lat: **vehicle_lat**, lng: **vehicle_lng** });
var icon = new MQA.Icon('https://cdn2.iconfinder.com/data/icons/gpsmapicons/blue/gpsmapicons07.png', 26, 26);
vehicle.setIcon(icon);
vehicle.setKey("abc");
map.addShape(vehicle);
vehicle.setRolloverContent("Vehicle # KA05 9999");
}
function remveh1()
{
map.removeShape(map.removeShape(map.getByKey("abc")));
};
函数FileHelper()
{}
{
FileHelper.readStringFromFileAtPath=函数(pathOfFileToReadFrom)
{
var request=new XMLHttpRequest();
打开(“获取”,pathoffieltoreadfrom,false);
请求发送(空);
var returnValue=request.responseText;
返回值;
}
}
var pathoffieltoread=“LatLon.txt”;
var contentsOfFileAsString=FileHelper.readStringFromFileAtPath
(
病理学
);
**var contentsArray=新数组();
var contentsArray=contentsOfFileAsString.split('\n');**
函数main()
{
对于(i=0;i
实际上我想要的是,我想要一个延迟b/w在地图上显示位置。从上面的代码中,我一次显示所有位置,我想要一个接一个地显示它们,我应该怎么做
作为(简化的)背景,浏览器使用与重新绘制相同的线程来运行JavaScript,因此如果您尝试在for
循环中更新页面,整个循环将在实际重新绘制之前完成。您可以通过使用基于setTimeout()的算法替换for
来处理此问题
调用。在超时之间,JS是“非活动的”(不作为技术术语),因此浏览器可以重新绘制
您的代码包含对未显示的函数的调用,因此我只能建议对其进行相当小的更新,将addMarker()
更改为接受对标记的引用作为参数,而不是依赖全局contentsArray()
和I
变量,然后重写main()
要在调用addMarker()时传递相应的标记对象,请执行以下操作:
函数main(){
var i=-1;
(函数processNext(){
if(++i
(简化)演示:“在阵列中,您不能给出延迟”-您所说的“延迟”是什么意思?请更清楚地描述您正在尝试执行的操作。如果您希望标记在地图上一次显示一个,并且每个标记之间有一个延迟,那么数组仍然是存储所有标记的合适位置,您只需更改显示它们的代码…我正试图在地图上显示一个位置,基于纬度,我不想存储文件在数组中,有没有其他存储文件的方法?数组有什么问题?如果你有很多类似的东西,比如一系列坐标,那么数组是存储它们的最明显和最好的结构。同样,你提到了“延迟”在你的问题中,但没有解释这实际上意味着什么。你试图达到什么效果?从用户的角度来看,如果它按照你希望的方式工作会发生什么?实际上我想要的是,我想要一个延迟b/w显示地图上的位置,从上面的代码我一次显示所有的位置,我想要显示我一个接一个,我该怎么做
function main() {
var i = -1;
(function processNext() {
if (++i < contentsArray.length) { // if there are markers left
addMarker(contentsArray[i]); // add the next one
setTimeout(function() { // then delay before
remveh1(); // removing it and then
processNext(); // process the next one
}, 2000);
}
})();
}
function addMarker(marker)
{
console.log(marker);
split_contentArray = marker.split(',');
// rest of your function here unchanged
}