8

プロジェクトで描画プラグインを使用していますが、レイヤー タイプごとに描画ツールを非表示/表示する方法を知りたいです。

たとえば、2 つのレイヤーがあり、そのうちの 1 つは Polygon で、もう 1 つは Line であるとします。

ユーザーがポリゴンレイヤーを選択した場合、線画ツールを非表示にしたい。

その後、ユーザーがラインレイヤーを選択した場合、ポリゴン描画ツールを非表示にしたい。私はここを見てきましたが、この例はツールを静的にしています。私は動的に変更したいです。どうやってやるの?

すべての提案をいただければ幸いです。

4

3 に答える 3

27

私はそれを自分で解決しました。マップの初期化時にこの描画コントロールを追加しています。

 drawControl = new L.Control.Draw({
    draw : {
        position : 'topleft',
        polygon : false,
        polyline : false,
        rectangle : false,
        circle : false

    },
    edit : false
});

map.addControl(drawControl); 

その後、描画ツールをリセットする関数を書きました。

  function setDrawingTools(layerType) {

    map.removeControl(drawControl);

    if (layerType == 'Polygon') {

        drawControl = new L.Control.Draw({
            draw : {
                position : 'topleft',
                polygon : {
                    title : 'Draw a sexy polygon!',
                    allowIntersection : false,
                    drawError : {
                        color : '#b00b00',
                        timeout : 1000
                    },
                    shapeOptions : {
                        color : '#bada55'
                    },
                    showArea : true
                },
                polyline : false,
                rectangle : false,
                circle : false,
                marker : false
            },
            edit : false
        });
    } else if (layerType == 'Line') {

        drawControl = new L.Control.Draw({
            draw : {
                position : 'topleft',
                polygon : false,
                polyline : {
                    metric : false
                },
                rectangle : false,
                circle : false,
                marker : false
            },
            edit : false
        });
    } else if (layerType == 'Point') {

        drawControl = new L.Control.Draw({
            draw : {
                position : 'topleft',
                polygon : false,
                polyline : false,
                rectangle : false,
                circle : false

            },
            edit : false
        });

    }
    map.addControl(drawControl);
}
于 2014-01-05T11:10:27.223 に答える
0

レイヤーをより適切に制御しようとしているようです。コードを投稿せずに言うのは難しいです。ユーザーの選択時にレイヤーを追加および削除することを検討しましたか? レイヤーの操作に関するドキュメントを次に示します。構文は次のようになります。

map.addLayer(layer_in_question);

また

map.removeLayer(layer_in_question);
于 2014-01-03T21:18:13.533 に答える