私はメニュー内の異なるマップレイヤーをリストするマッピングアプリケーションを持っています。各レイヤーは特定のクラス名を持っています。javascript変数をjavascript関数に渡しますか?
このクラス名は、ユーザーが名前をクリックしてレイヤーをマップに追加したりマップから削除したり、レイヤーをマップキーに追加/削除したりするときに使用されます。
これは問題なく動作していますが、マップキーから削除できるように、各レイヤー名の横に小さな十字形を含めて苦労しています。
私のコードは以下の通りです - 私は、レイヤーIDを取り、関数内でこれを使用しようとしますが、私はエラーを取得onclickの機能が含ましよう:私の変数は、現在のオブジェクトであるため
Uncaught Error: Syntax error, unrecognized expression: .icon[object Object]
をください別の方法でlid
を指定する必要がありますか?
<li class='last layerlist' id='layer63'><a href='#'><i class="fa fa-circle fa-lg iconlayer63"></i><span> Flood Zone 2</span></a></li>
Javascriptが以下のリストをユーザーがクリックすると、それがIDを取るときに何が起こるかを示し、その後:クラスIDを使用してレイヤーのリストのオプションを示しHTMLはここにある
それが表示されている場合に応じて、レイヤーを非表示にしたり表示するためのいずれか(IDと同じである)レイヤ名を取得するために、これを使用しています。
//Change layer visibility and add/remove from map key
$(".layerlist").click(function() {
var lid = $(this).attr('id');
map.getLayers().forEach(function(layer) {
if (layer.get('name') == lid) {
var visibility = layer.getVisible();
if (visibility == false) {
layer.setVisible(true);
$(".icon" + lid).removeClass("fa-circle").addClass("fa-check-circle");
$("#map-content").append("<p id='" + lid + "key'><a href='#'><i class='fa fa-times-circle' onclick='removeLayer(" + lid + ");'></i></a><img src='img/legend/" + lid + ".png' alt='Layer image'/> " + layer.get('label') + "</p>");
}
if (visibility == true) {
layer.setVisible(false);
$(".icon" + lid).removeClass("fa-check-circle").addClass("fa-circle");
$("#" + lid + "key").remove();
}
}
});
});
//Remove selected layer from map key
function removeLayer(lid) {
lid.setVisible(false);
$(".icon" + lid).removeClass("fa-check-circle").addClass("fa-circle");
$("#" + lid + "key").remove();
}
HTMLコードの例を教えてください。 –
lidは文字列に強制的に変換されるオブジェクトですので、[オブジェクトオブジェクト]、あなたは蓋についてもっと教えていただけますか? –
remove layerが 'layer'オブジェクトを期待していて、文字列を渡しています - それは明らかに動作しません:) – Maverick