Drop Shadow Effect デモ

🎨 Drop Shadowエフェクト機能

  • SVGフィルターによる立体的な影の実装
  • effect-utils.tsのcreateDropShadow関数を使用
  • X/Y方向のオフセット、ぼかし、色、透明度をリアルタイムで調整可能
  • プリセット(標準/ソフト/ハード)とカスタム設定の切り替え
  • 複数レイヤーへの影の適用と深度表現

地図表示

実装サンプル

Drop Shadowエフェクトの使用例

// Drop Shadowエフェクトの使用例
// UMDビルドではThematikaオブジェクトから直接アクセス

// カスタムDrop Shadowフィルターの作成
const dropShadowFilter = Thematika.createDropShadow({
    id: 'custom-shadow',
    dx: 4,              // X方向のオフセット
    dy: 4,              // Y方向のオフセット
    stdDeviation: 3,    // ぼかしの強度
    floodColor: '#000000',  // 影の色
    floodOpacity: 0.4       // 影の透明度
});

// SVGのdefsにフィルターを追加
const svg = d3.select('#map svg');
const defs = svg.append('defs');
dropShadowFilter(defs);

// GeojsonLayerにフィルターを適用
const worldLayer = new Thematika.GeojsonLayer({
    data: geojson,
    attr: {
        'fill': (d, i) => {
            // 高さを表現するグラデーションカラー
            const colors = ['#3b82f6', '#10b981', '#f59e0b', '#ef4444', '#8b5cf6'];
            return colors[i % colors.length];
        },
        'filter': dropShadowFilter.url(),  // Drop Shadowフィルターを適用
        'stroke': '#ffffff',
        'stroke-width': 0.5,
        'opacity': 0.9
    }
});

// プリセットフィルターの使用例
const standardShadow = Thematika.FilterPresets.standardDropShadow();
const softShadow = Thematika.FilterPresets.softDropShadow();

// ハードシャドウ(カスタム定義)
const hardShadow = Thematika.createDropShadow({
    id: 'hard-shadow',
    dx: 6,
    dy: 6,
    stdDeviation: 1,
    floodColor: '#000000',
    floodOpacity: 0.6
});