Javascript 使用传单.MarkerCluster.LayerSupport插件在传单中显示弹出窗口
我使用传单来展示GeoJson的数据,我添加了MarkerCluster插件,到目前为止还不错 下一步是将集群分组,为此,我使用插件传单.MarkerCluster.LayerSupport 这就是问题的根源,我尝试了以下方法,它显示了组,以及地图上带有markerCluster的标记,但我看不到弹出窗口中的信息。弹出窗口为空。在尝试分组标记之前,如果我在弹出窗口中有信息Javascript 使用传单.MarkerCluster.LayerSupport插件在传单中显示弹出窗口,javascript,leaflet,geojson,Javascript,Leaflet,Geojson,我使用传单来展示GeoJson的数据,我添加了MarkerCluster插件,到目前为止还不错 下一步是将集群分组,为此,我使用插件传单.MarkerCluster.LayerSupport 这就是问题的根源,我尝试了以下方法,它显示了组,以及地图上带有markerCluster的标记,但我看不到弹出窗口中的信息。弹出窗口为空。在尝试分组标记之前,如果我在弹出窗口中有信息 /* **************************************** Mapa Leaflet *****
/*
****************************************
Mapa Leaflet
****************************************
*/
// Se crea el mapa
var mymap = L.map('mapid', {
center: [40.4167,-3.70325],
zoom:6
});
// llamada a la API de Openstreetmap
var apiOpenstrertmap = {
url: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
options: {attribution:'© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'}
}
// Icono personalizado
var icon = L.divIcon({
className: 'custom-div-icon',
html: "<div class='marker-pin'></div><i class='material-icons'></i>",
iconSize: [30, 42],
iconAnchor: [15, 42]
});
var renderMap = L.tileLayer(apiOpenstrertmap.url,apiOpenstrertmap.options);
renderMap.addTo(mymap);
/*
****************************************
Añade la información al popUp personalizado
****************************************
*/
function dataPopup(feature,layer){
var outData = [];
if (feature.properties){
for(key in feature.properties){
switch (key) {
case 'movil':
var movil = `<p class="tagDescription"><span class="tagKey">Móvil: </span>${feature.properties[key]}</p>`;
break;
case 'gps':
var gps = `<a class="urlOsm" href="${feature.properties[key]}" rel="noopener noreferrer" target="_blank">Ir</a>`
break;
}
}
// Inserta los tags en el orden deseado
outData.push(movil, gps)
layer.bindPopup(outData.join(''));
}
}
/*
****************************************
Carga la información del Geojson, y define MarkerCluster
****************************************
*/
// Variables para crear los layerGroup
var mcgLayerSupportGroup = L.markerClusterGroup.layerSupport(),
group1 = L.layerGroup(),
group2 = L.layerGroup(),
group3 = L.layerGroup(),
group4 = L.layerGroup(),
control = L.control.layers(null, null, { collapsed: false }),
marker;
// Agraga los grupos al mapa
mcgLayerSupportGroup.addTo(mymap);
// Llamada ajax para mostrar los datos del geojson en el mapa
var myLoader = document.getElementById('myLoaderContainer');
var xhr = new XMLHttpRequest();
xhr.open('GET', '../data/map/a.geojson');
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.responseType = 'json';
xhr.onload = function() {
if (xhr.status == 200){
var geojsonAjax = L.geoJSON(xhr.response, {
onEachFeature:dataPopup,
// Añade el icon personalizado
pointToLayer: function (feature, latlng) {
marker = L.marker(latlng, {icon:icon})
if (feature.properties.provincia == 'a') {
marker.addTo(group1)
}else if(feature.properties.provincia == 'b'){
marker.addTo(group3)
}
else {
marker.addTo(group2)
}
}
});
mcgLayerSupportGroup.checkIn([group1, group2, group3]);
control.addBaseLayer(group1, 'first quarter');
control.addBaseLayer(group2, 'Second quarter');
control.addBaseLayer(group3, 'Third quarter');
control.addTo(mymap);
group1.addTo(mymap);
group2.addTo(mymap);
group3.addTo(mymap);
myLoader.style.display = "none";
}else {
alert("Error al cargar el mapa. Por favor inténtelo más tarde.")
myLoader.style.display = "none";
}
};
xhr.send();
/*
****************************************
Mapa传单
****************************************
*/
//塞克里亚埃尔马帕酒店
var mymap=L.map('mapid'{
中间:[40.4167,-3.70325],
缩放:6
});
//llamada a la API de Openstreetmap
变量apiOpenstrertmap={
url:'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
选项:{属性:'©;贡献者'}
}
//伊科诺
var icon=L.divIcon({
className:“自定义div图标”,
html:“”,
iconSize:[30,42],
iconAnchor:[15,42]
});
var renderMap=L.tileLayer(apionstrertmap.url,apionstrertmap.options);
renderMap.addTo(mymap);
/*
****************************************
Añade la información al-do
****************************************
*/
功能数据弹出窗口(功能、图层){
var-outData=[];
if(feature.properties){
用于(输入feature.properties){
开关(钥匙){
“movil”一案:
var movil=`Móvil:${feature.properties[key]}
`;
打破
“全球定位系统”案例:
变量gps=``
打破
}
}
//埃尔奥登德塞多酒店
outData.push(移动、gps)
layer.bindPopup(outData.join(“”));
}
}
/*
****************************************
Carga la información del Geojson,y定义标记集群
****************************************
*/
//层组中的变量
var mcgLayerSupportGroup=L.markerClusterGroup.layerSupport(),
group1=L.layerGroup(),
group2=L.layerGroup(),
group3=L.layerGroup(),
group4=L.layerGroup(),
control=L.control.layers(null,null,{collapsed:false}),
标记;
//阿格拉加洛斯格鲁波斯阿尔马帕酒店
mcgLayerSupportGroup.addTo(mymap);
//地图上的地理数据
var myLoader=document.getElementById('myLoaderContainer');
var xhr=new XMLHttpRequest();
open('GET','../data/map/a.geojson');
setRequestHeader('Content-Type','application/json');
xhr.responseType='json';
xhr.onload=函数(){
如果(xhr.status==200){
var geojsonAjax=L.geoJSON(xhr.response{
onEachFeature:dataPopup,
//厄尔尼诺
pointToLayer:功能(特性、latlng){
marker=L.marker(latlng,{icon:icon})
如果(feature.properties.provincia=='a'){
marker.addTo(组1)
}else if(feature.properties.provincia==“b”){
marker.addTo(组3)
}
否则{
marker.addTo(组2)
}
}
});
mcgLayerSupportGroup.checkIn([group1、group2、group3]);
control.addBaseLayer(第1组,“第一季度”);
control.addBaseLayer(第2组,“第二季度”);
control.addBaseLayer(第3组,“第三季度”);
control.addTo(mymap);
第1组:添加到(mymap);
组2.添加到(mymap);
第3组:添加到(mymap);
myLoader.style.display=“无”;
}否则{
警报(“错误al-cargar el-mapa.Por favor inténtelo más tarde.”
myLoader.style.display=“无”;
}
};
xhr.send();
欢迎来到SO
您可能只需要在pointToLayer
选项函数的末尾返回标记
否则,您的dataPopup
功能/onEachFeature
选项将没有层
。欢迎使用SO
您可能只需要在pointToLayer
选项函数的末尾返回标记
否则,您的dataPopup
功能/onEachFeature
选项将不会有一个层