Javascript 使用传单.MarkerCluster.LayerSupport插件在传单中显示弹出窗口

Javascript 使用传单.MarkerCluster.LayerSupport插件在传单中显示弹出窗口,javascript,leaflet,geojson,Javascript,Leaflet,Geojson,我使用传单来展示GeoJson的数据,我添加了MarkerCluster插件,到目前为止还不错 下一步是将集群分组,为此,我使用插件传单.MarkerCluster.LayerSupport 这就是问题的根源,我尝试了以下方法,它显示了组,以及地图上带有markerCluster的标记,但我看不到弹出窗口中的信息。弹出窗口为空。在尝试分组标记之前,如果我在弹出窗口中有信息 /* **************************************** Mapa Leaflet *****

我使用传单来展示GeoJson的数据,我添加了MarkerCluster插件,到目前为止还不错

下一步是将集群分组,为此,我使用插件传单.MarkerCluster.LayerSupport

这就是问题的根源,我尝试了以下方法,它显示了组,以及地图上带有markerCluster的标记,但我看不到弹出窗口中的信息。弹出窗口为空。在尝试分组标记之前,如果我在弹出窗口中有信息

/*
****************************************
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:'&copy; <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
选项将不会有一个