这是我的代码我正在阅读一个包含纬度和数据的文件经度,我在一个数组中输入文件内容。但我不想存储它的数组,还有其他任何选项,以便我可以存储&处理它。
我正在使用这些lat&在一个for循环中,我将这些传递给一个函数,在一个数组中你不能给出一个延迟所以我想要其他方法
这是我的代码:
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")));
};
答案 0 :(得分:0)
实际上我想要的是,我想要一个延迟黑白显示在地图上的位置。从上面的代码我一次显示所有位置,我想逐个显示它们,我该怎么做
通过(简化)背景,浏览器使用相同的线程来运行JavaScript,就像重绘一样,所以如果你尝试在for
循环内更新页面,整个循环将在实际之前完成重绘。您可以使用基于for
调用的算法替换setTimeout()
来处理此问题。在超时之间,JS是&#34;不活动&#34; (不是技术术语)因此浏览器可以重新绘制。
您的代码包含对您不会显示的功能的调用,因此我只能建议对其进行相当少的更新,将addMarker()
更改为接受对标记的引用作为参数而不是依赖于全局contentsArray()
和i
变量,然后在调用main()
时重写addMarker()
以传递相应的标记对象:
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
}