Javascript 或 jQuery png 播放器

标签 javascript jquery dictionary

我正在使用一个名为 Leaflet 的 map 应用程序。我使用的一些代码如下:

var layer1 =L.tileLayer('http://{s}.tile.cloudmade.com/BC9A493B41014CAABB98F0471D759707/7540/256/{z}/{x}/{y}.png', {
    attribution: 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://cloudmade.com">CloudMade</a>',
    maxZoom: 12

}).addTo(map);

//上面的代码仅将基础层放置在 DIV 标签内。但关键是//addTo 方法。

我还从 Aeris 获取天气雷达数据,并使用此在传单上创建一个图层:

var radar_img_arr = createVariables();

createVariables() 看起来像这样:

function createVariables(){
  var radar_images = [];

  for (var i = 0; i <= 99; ++i) {
      radar_images[i] = L.tileLayer('http://tile2.aerisapi.com/QjvmoFnKc1Wj94aDULEX_8Y7R8eagwQKlUusR5WZk6JTBdz6zlCm3KIP15CLG/radar/{z}/{x}/{y}/'+data.files[i].time +'.png', {opacity: 0.6, format: 'image/png',   maxZoom: 12,attribution: "FOSM"}).addTo(map).setZIndex(999);
  }

  return radar_images;
}

以上将所有数据一次性添加到 map 中只是为了测试。

我真正想要的是一个循环,它可以从 map 中删除旧图层并用新图层替换它。

下面是两个重要的方法: map.removeLayer(radar_img_arr[i]); map.addLayer(radar_img_arr[i+1]);

我正在尝试编写一个循环来执行此操作,但时间安排困惑了。其他天气网站使用 Flex 或 Flash 来制作雷达环动画,但我想尝试 Javascript 解决方案。

有人知道如何在 JS 或 jQuery 中创建这个循环吗?

谢谢, 吉姆

最佳答案

您应该使用设置超时来迭代循环...类似:

// function for setTimeout
var updateImage = function() {

  //gets the current image & update place
  var img = radar_img_arr[place++] 

  // code to update display here.
  ...

  // call the function again in 1 second 
  setTimeout(updateImage, 1000)

  // reset place to 0 if need be
  if (step == radar_img_arr.length-1) 
    place = 0;

}

// variable to store where we are in the array.
var place = 0

// array of images
var radar_img_arr = createVariables()

//start the process in 1 second:
setTimeout(updateImage, 1000)

// or, start it right away:
updateImage()

我不喜欢使用 setInterval,无论您经过多少毫秒,它都会自动一遍又一遍地调用您的函数。原因是,如果您的函数运行时间比计时器花费的时间长,您就会创建一个竞争条件,在您的情况下,这会导致图像奇怪地更新。

关于Javascript 或 jQuery png 播放器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12824521/

相关文章:

javascript - 使用 JavaScript 执行命令行调用

javascript - 当用户在输入框中输入小数点时逗号消失

javascript - jQuery 随机化图片

jquery - 将 <img> 包装在 <span> 中并通过 jQuery 将类添加到 <span>

c++ - 在声明函数时映射类的函数

json - Python 在读取 JSON 文件时抛出错误

python - 如何将此字典转换为元组列表?

javascript - 未知提供者 : $elementProvider <- $element <- DragListController

javascript - 直接分配.prototype进行类继承

javascript - Vue 组件 - 如何避免改变 prop(Laravel 组件)