循环中的传单图层组
Leaflet Layergroups in loop
您好,我有这段代码可以从 txt 文件中在图像地图上创建标记。我想添加图层控件以隐藏或显示带有 L.control.layers 的不同标记,现在使用此代码可以隐藏所有标记。是否可以按坐标将标记拆分成组?谢谢
var stringData = $.ajax({
url: "a.txt",
async: false
}).responseText;
//Split values of string data
var stringArray = stringData.split("\n");
var arrayLength = stringArray.length ;
var layerGroup = L.layerGroup().addTo(map);
for(var i = 0; i < arrayLength; i++) {
var x = $.trim(stringArray[i].split(",")[0]);
var y = $.trim(stringArray[i].split(",")[1]);
var img2 = $.trim(stringArray[i].split(",")[2]);
var circle = L.circle([x,y], {
color: 'red',
fillColor: '#f03',
fillOpacity: 0.3,
radius: 2,
}).addTo(map);
circle.url = img2
circle.on('click', function(){
window.location = (this.url);
});
layerGroup.addLayer(circle);
}
var overlayMaps = {
"Normal": layerGroup,
"Elite": layerGroup,
"Ultimate": layerGroup
};
L.control.layers(null, overlayMaps).addTo(map);
a.txt
-146.4375, 183.0625, img/img1.png
-104.5, 182.75, img/img2.png,
当然可以。只需创建 3 个图层组。在你的循环中,你必须添加一个条件来将你的圈子添加到其中一个。
var layerGroup1 = L.layerGroup().addTo(map);
var layerGroup2 = L.layerGroup().addTo(map);
var layerGroup3 = L.layerGroup().addTo(map);
for(var i = 0; i < arrayLength; i++) {
var x = $.trim(stringArray[i].split(",")[0]);
var y = $.trim(stringArray[i].split(",")[1]);
var img2 = $.trim(stringArray[i].split(",")[2]);
var circle = L.circle([x,y], {
color: 'red',
fillColor: '#f03',
fillOpacity: 0.3,
radius: 2,
});
circle.url = img2
circle.on('click', function(){
window.location = (this.url);
});
switch(img2) {
case "img/img1.png":
circle.addTo(layerGroup1);
break;
case "img/img2.png":
circle.addTo(layerGroup2);
break;
case "img/img3.png":
circle.addTo(layerGroup3);
break;
default:
break;
}
}
var overlayMaps = {
"Normal": layerGroup1,
"Elite": layerGroup2,
"Ultimate": layerGroup3
};
是这样的吗?
var layerGroup1 = L.layerGroup().addTo(map);
var layerGroup2 = L.layerGroup().addTo(map);
var layerGroup3 = L.layerGroup().addTo(map);
for(var i = 0; i < arrayLength; i++) {
var x = $.trim(stringArray[i].split(",")[0]);
var y = $.trim(stringArray[i].split(",")[1]);
var img2 = $.trim(stringArray[i].split(",")[2]);
var circle = L.circle([x,y], {
color: 'red',
fillColor: '#f03',
fillOpacity: 0.3,
radius: 2,
}).addTo(map).addTo(layerGroup1);
circle.url = img2
circle.on('click', function(){
window.location = (this.url);
});
if((img2 === "img/img2.png")||(img2 === "img/img3.png")){
var circle2 = L.circle([x,y], {
color: 'red',
fillColor: '#f03',
fillOpacity: 0.3,
radius: 2,
}).addTo(map).addTo(layerGroup2);
}
}
var overlayMaps = {
"Normal": layerGroup1,
"Elite": layerGroup2,
"Ultimate": layerGroup3
};
L.control.layers(null, overlayMaps).addTo(map);
您好,我有这段代码可以从 txt 文件中在图像地图上创建标记。我想添加图层控件以隐藏或显示带有 L.control.layers 的不同标记,现在使用此代码可以隐藏所有标记。是否可以按坐标将标记拆分成组?谢谢
var stringData = $.ajax({
url: "a.txt",
async: false
}).responseText;
//Split values of string data
var stringArray = stringData.split("\n");
var arrayLength = stringArray.length ;
var layerGroup = L.layerGroup().addTo(map);
for(var i = 0; i < arrayLength; i++) {
var x = $.trim(stringArray[i].split(",")[0]);
var y = $.trim(stringArray[i].split(",")[1]);
var img2 = $.trim(stringArray[i].split(",")[2]);
var circle = L.circle([x,y], {
color: 'red',
fillColor: '#f03',
fillOpacity: 0.3,
radius: 2,
}).addTo(map);
circle.url = img2
circle.on('click', function(){
window.location = (this.url);
});
layerGroup.addLayer(circle);
}
var overlayMaps = {
"Normal": layerGroup,
"Elite": layerGroup,
"Ultimate": layerGroup
};
L.control.layers(null, overlayMaps).addTo(map);
a.txt
-146.4375, 183.0625, img/img1.png
-104.5, 182.75, img/img2.png,
当然可以。只需创建 3 个图层组。在你的循环中,你必须添加一个条件来将你的圈子添加到其中一个。
var layerGroup1 = L.layerGroup().addTo(map);
var layerGroup2 = L.layerGroup().addTo(map);
var layerGroup3 = L.layerGroup().addTo(map);
for(var i = 0; i < arrayLength; i++) {
var x = $.trim(stringArray[i].split(",")[0]);
var y = $.trim(stringArray[i].split(",")[1]);
var img2 = $.trim(stringArray[i].split(",")[2]);
var circle = L.circle([x,y], {
color: 'red',
fillColor: '#f03',
fillOpacity: 0.3,
radius: 2,
});
circle.url = img2
circle.on('click', function(){
window.location = (this.url);
});
switch(img2) {
case "img/img1.png":
circle.addTo(layerGroup1);
break;
case "img/img2.png":
circle.addTo(layerGroup2);
break;
case "img/img3.png":
circle.addTo(layerGroup3);
break;
default:
break;
}
}
var overlayMaps = {
"Normal": layerGroup1,
"Elite": layerGroup2,
"Ultimate": layerGroup3
};
是这样的吗?
var layerGroup1 = L.layerGroup().addTo(map);
var layerGroup2 = L.layerGroup().addTo(map);
var layerGroup3 = L.layerGroup().addTo(map);
for(var i = 0; i < arrayLength; i++) {
var x = $.trim(stringArray[i].split(",")[0]);
var y = $.trim(stringArray[i].split(",")[1]);
var img2 = $.trim(stringArray[i].split(",")[2]);
var circle = L.circle([x,y], {
color: 'red',
fillColor: '#f03',
fillOpacity: 0.3,
radius: 2,
}).addTo(map).addTo(layerGroup1);
circle.url = img2
circle.on('click', function(){
window.location = (this.url);
});
if((img2 === "img/img2.png")||(img2 === "img/img3.png")){
var circle2 = L.circle([x,y], {
color: 'red',
fillColor: '#f03',
fillOpacity: 0.3,
radius: 2,
}).addTo(map).addTo(layerGroup2);
}
}
var overlayMaps = {
"Normal": layerGroup1,
"Elite": layerGroup2,
"Ultimate": layerGroup3
};
L.control.layers(null, overlayMaps).addTo(map);