0

ユーザーがデータ(geojson、topojson、raster、shapefile)をアップロードして表示できるリーフレットマップがあります。レイヤーを追加/削除するためのカスタム コントロール レイヤーを作成するまで、すべてがうまく機能します。NB:// 私のスクリプトにはリーフレット描画プラグインがあり、描画プラグインをサポートするリーフレット バージョンが layerGroup コントロール オプションをサポートしていないのは奇妙です。

そのため、レイヤーの追加と削除を支援する次の関数を作成しました。

function one(event) {
    event.preventDefault();
        if(m.hasLayer(files[0])) {
        this.removeClass('selected');
        m.removeLayer(files[0]);
    } else {
        m.addLayer(files[0]);        
        this.addClass('selected');
   }
}

function two(event) {
        event.preventDefault();
        if(m.hasLayer(files[1])) {
        this.removeClass('selected');
        m.removeLayer(files[1]);
    } else {
        m.addLayer(files[1]);        
        this.addClass('selected');
   }
}
    
function three(event) {
        event.preventDefault();
        if(m.hasLayer(files[2])) {
        this.removeClass('selected');
        m.removeLayer(files[2]);
    } else {
        m.addLayer(files[2]);        
        this.addClass('selected');
   }
}

次に、データセット ファイルのアップロード時に、次のコード行により、レイヤーを追加/削除するオプションがユーザーに提供されます。

if (file.name.slice(-3) === 'zip') {
        count++;
        counter.push(count);
        
        if(count == 1) {
            func = one;
        } else if(count == 2) {
            func = two;
        } else if(count == 3) {
            func = three;
        } else if(count == 4) {
            func = four;
        }
        color = colors.getRandom();
        
        var f1 = file.name.split('.');
        var f = f1[0];
        var ff = f;
        if(f.length > 15) {
            f = f.slice(0, 14);
            f = f + '...';
        }
        files.push(ff);
        var x = document.getElementById('toggle-layers');
        var aTag = document.createElement('a');
        aTag.setAttribute('href', '#');
        aTag.class = 'nav-link';
        aTag.onclick = func;
        aTag.style.paddingLeft = '20px';
        aTag.id = count;
        aTag.innerHTML = f;
        aTag.style.textDecoration = 'none';
        var li = document.createElement('li');
        li.class = 'nav-item';
        x.appendChild(li);
        li.appendChild(aTag);}

生成されたリンクをクリックするまで、すべてが正常に機能します。ただし、レイヤーは切り替えられず、代わりに「Uncaught TypeError: "sme_site" のプロパティ "_leaflet_id" に割り当てられません: オブジェクトではありません」というエラーが表示されます。このようなエラーが表示される理由は何ですか? Google で検索しましたが、このようなエラーの結果はありません。

4

0 に答える 0