Javascript 传单:可由MarkerCluster使用的多边形中心对象

Javascript 传单:可由MarkerCluster使用的多边形中心对象,javascript,leaflet,esri,leaflet.markercluster,esri-leaflet,Javascript,Leaflet,Esri,Leaflet.markercluster,Esri Leaflet,是否有方法将onEachFeature事件(见下文)中通过.getCenter()创建的中心点添加到L.标记或类似对象,该对象包含在该事件中创建的所有中心点,可供传单.Markercluster使用 我认为使用featureGroup可能是解决方案,但显然不是 我可以通过L.Marker或L.FeatureGroup上的addTo(map)方法在地图上显示未聚集的中心点,但不幸的是,当我尝试在这两个创建的对象上使用markerCluster时,地图显示为空。浏览器中的控制台上未显示任何错误消息

是否有方法将onEachFeature事件(见下文)中通过.getCenter()创建的中心点添加到L.标记或类似对象,该对象包含在该事件中创建的所有中心点,可供传单.Markercluster使用

我认为使用featureGroup可能是解决方案,但显然不是

我可以通过L.Marker或L.FeatureGroup上的addTo(map)方法在地图上显示未聚集的中心点,但不幸的是,当我尝试在这两个创建的对象上使用markerCluster时,地图显示为空。浏览器中的控制台上未显示任何错误消息

我在JS还是相当的新手,所以我有一种预感,我遗漏了一些基本的东西,也许是关于L.Markercluster本身,我为这里的任何noob错误道歉

图书馆:

<!-- Leaflet -->

<link rel="stylesheet" href="https://unpkg.com/leaflet@1.2.0/dist/leaflet.css"
  integrity="sha512-M2wvCLH6DSRazYeZRIm1JnYyh22purTM+FDB5CsyxtQJYeKq83arPe5wgbNmcFXGqiSH2XR8dT/fJISVA1r/zQ=="
  crossorigin=""/>
<script src="https://unpkg.com/leaflet@1.2.0/dist/leaflet.js"
  integrity="sha512-lInM/apFSqyy1o6s89K4iQUKg6ppXEgsVxT35HbzUupEVRh2Eu9Wdl4tHj7dZO0s1uvplcYGmt3498TtHq+log=="
  crossorigin=""></script>

<!-- ESRI Leaflet -->

<script src="https://unpkg.com/esri-leaflet@2.0.4/dist/esri-leaflet.js"></script>

<!-- Leaflet-markercluster -->

<link rel="stylesheet" href="https://unpkg.com/leaflet.markercluster@1.0.6/dist/MarkerCluster.css"></script>
<link rel="stylesheet" href="https://unpkg.com/leaflet.markercluster@1.0.6/dist/MarkerCluster.Default.css"></script>
<script src="https://unpkg.com/leaflet.markercluster@1.0.6/dist/leaflet.markercluster.js"></script>

<!--  Leaflet.MarkerCluster.LayerSupport -->

<script src="https://unpkg.com/leaflet.markercluster.layersupport@1.0.5/dist/leaflet.markercluster.layersupport.js"></script>

脚本:

<script>

  var map = L.map('map', {
    center: [42.389810, -72.524684],
    zoom: 5
  });

  var esriTopo = L.esri.basemapLayer('Topographic').addTo(map);

  var ProjectMap = L.esri.featureLayer ({
    url: 'https://services.arcgis.com/2gdL2gxYNFY2TOUb/arcgis/rest/services/NECSC_Test_Data/FeatureServer/1',
    //cheap hack to making the polygons invisible
    weight: 0,
    fillOpacity: 0,

    // creating the centerpoints
    onEachFeature: function(feature,layer){
      if (feature.geometry.type = 'Polygon') {
        var bounds = layer.getBounds();
        var center = bounds.getCenter();

        var centerpoints = L.marker(center);
        centerpointlayer.addLayer(centerpoints);
        // centerpointlayer defined below as global variable
      };
    };
  }).addTo(map);

  var centerpointlayer = L.featureGroup();
  // 

  var clusters = L.markerClusterGroup.layerSupport();
  clusters.addTo(map);
  clusters.checkIn(centerpointlayer);

  map.zoomIn(5);
  map.zoomOut(5);

</script>

</body>
</html>

var map=L.map('map'{
中间:[42.389810,-72.524684],
缩放:5
});
var esriTopo=L.esri.basemapLayer(“地形”).addTo(地图);
var ProjectMap=L.esri.featureLayer({
网址:'https://services.arcgis.com/2gdL2gxYNFY2TOUb/arcgis/rest/services/NECSC_Test_Data/FeatureServer/1',
//使多边形不可见的廉价技巧
重量:0,,
不透明度:0,
//创建中心点
onEachFeature:功能(功能,图层){
if(feature.geometry.type='Polygon'){
var bounds=layer.getBounds();
var center=bounds.getCenter();
变量中心点=L.标记(中心);
centerpointlayer.addLayer(中心点);
//以下定义为全局变量的centerpointlayer
};
};
}).addTo(地图);
var centerpointlayer=L.featureGroup();
// 
var clusters=L.markerClusterGroup.layerSupport();
clusters.addTo(map);
clusters.checkIn(centerpointlayer);
地图缩放(5);
zoomOut地图(5);

Gah…原来我实现L.Markercluster是错误的(也就是说,不像API文档中说的那样)。结尾/script之前的最后几行代码应为:

var centerpointlayer = L.layerGroup();
var clusters = L.markerClusterGroup.layerSupport();
clusters.addLayer(centerpointlayer);
map.addLayer(clusters);