私は完璧な解決策を見つけました!
キャンバスをdivのような通常のHTMLと組み合わせます。私はこれを作成しました。このdiv内に15000x15000ピクセルのフィールドを作成し、キャンバスオブジェクトを含む225個の新しいdivを作成します。すべてのキャンバスオブジェクトのサイズは100x100ピクセルです。
合計読み込み時間は約4秒で、JavaScriptとdivをいくつか使用して、ズームとドラッグを作成します。
<!DOCTYPE HTML>
<html>
<head>
<style>
body,html {
margin: 0px;
padding: 0px;
}
#container{
width: 15000px;
height: 15000px;
}
.canvas{
float: left;
margin: 0px;
padding: 0px;
height: 1000px;
width: 1000px;
}
</style>
<script src="/js/jquery.js"></script>
<script src="/js/kinetic.js"></script>
</head>
<body>
<div id="zoomer" style="position: absolute;"></div>
<div id="container">
<?php for ($x = 1;$x<=15;$x++){?>
<?php for ($y = 1;$y<=15;$y++){?>
<div class="canvas" id="blok<?php echo $x;?>-<?php echo $y;?>"></div>
<?php } ?>
<?php } ?>
</div>
<script>
var bk = {};
$.each($(".canvas"),function(){
var id = this.id;
bk[id] = new Kinetic.Stage({
container: this.id,
width: 1000,
height: 1000
});
var ly = new Kinetic.Layer();
for(x = 0;x<10;x++){
for(y = 0;y<10;y++){
var r = Math.random();
var g = Math.random();
var b = Math.random();
var tile = new Kinetic.Rect({
width: 100,
height: 100,
x: x * 100,
y: y * 100,
fill: "rgb("+ parseInt(255*r) +","+ parseInt(255*g) +","+ parseInt(255*b) +")"
});
ly.add(tile);
}
}
ly.draw();
bk[id].add(ly);
});
</script>
</body>
</html>
とにかく、努力してくれてありがとう!