读取javascript文件并执行代码

时间:2014-05-10 19:32:58

标签: javascript html html5 canvas

我正在使用HTML5画布构建类似于Google地图的地图。我也在创建一个平铺系统,只有在屏幕上拖动时才会加载平铺。

所以我有多个javascript文件将在画布上绘制,每个文件都是一个平铺。其中一个文件看起来像这样(ctx是画布2d上下文):

ctx.fillStyle="rgb(255,255,255)";
ctx.beginPath();
ctx.moveTo(256,197);
ctx.lineTo(177,241);
ctx.fill();

现在,我知道一种调用和执行javascript文件的方法,就像这样:

function getTile(src){
      var tileScript = document.createElement('script');
      tileScript.src = src;
      var head = document.getElementsByTagName('head')[0];
      head.appendChild(tileScript); }

但我真的不希望在文档头中添加大量脚本标记。对于地图中的所有图层,这可能最终成为一个荒谬的脚本数量,如50。

是否有其他方法可以读取和执行这些文件?或者,如果有人能提出一个更好的解决方法,我会接受建议。

1 个答案:

答案 0 :(得分:1)

如果您只需要坐标,请使用Ajax阅读.json文件。然后你可以用你的数据执行上面的函数。

JSON示例:

[[784,457],[759,989]] <- your coordinates

Ajax电话:

function loadJSON() {
    var xmlhttp;

    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else {
        // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
           render(xmlhttp.responseText)     //render your map with the response
        }
    }

    xmlhttp.open("GET", "your_json_file.json", true);
    xmlhttp.send();
}

render()功能:

function render(response){
   var json = JSON.parse(response); //parse the response to json
   ctx.fillStyle="rgb(255,255,255)";
   ctx.beginPath();
   ctx.moveTo(json[0][0],json[0][1]);
   ctx.lineTo(json[1][0],json[1][1]);
   ctx.fill();
}

或者,如果您真的想要评估您的功能,请执行 Ajax响应的eval()函数:

eval(xmlhttp.responseText);

但请记住,这是非常不确定的!