私は現在、一種のマップを表示するアプリケーションに取り組んでいます。マップ上でいくつかのアクションを実行できます。マップは非常に大きくなる可能性があるため、ユーザーはマップ全体を追跡するために小さなマップ (ミニマップ) を必要とします。
現在、2 つの段階があります。1 つはビッグ マップ用、もう 1 つはミニマップ用です。大きな地図にはいくつかのレイヤーが含まれていますが、ミニマップに表示する必要があるのはそのうちの 1 つだけです (レイアウトのようなものです)。
そこで、特定のレイヤーの AfterDrawing に EventListener を追加することを考えました。
this.layoutLayer.afterDraw(this._initMinimap);
イベントリスナーでは、次のことを行っています。
//...
_initMinimap : function(event) {
var ctrl = event;
if (!this.minimap) {
this.minimap = new Kinetic.Stage({
container : 'container',
width : 165,
height : 165
});
}
if (!this.mapLayer) {
this.mapLayer = new Kinetic.Layer({});
}
this.mapLayer.clear();
this.minimap.clear();
this.layoutLayer.toImage({
callback : function(img) {
var image = new Kinetic.Image({
image : img
});
image.setScale(0.01,0.01);
ctrl.mapLayer.add(image);
}
});
this.minimap.add(this.mapLayer);
this.minimap.draw();
},
//...
この問題を解決する方法を知っている人はいますか? 私はまだ JavaScript に詳しくないので、これが正しいアプローチかどうかはよくわかりません。
前もって感謝します :-)