MapBox। क्लस्टर पर क्लिक करके अंक की सूची प्राप्त करें

वोट
4

मैं MapBox जीएल जे एस का उपयोग करें और क्लस्टर के साथ एक मुसीबत मिलता है। मैं कुछ परतों मैं क्लस्टर पर क्लिक करके एकत्रित पाइंट की एक सूची प्राप्त करना चाहते हैं जोड़ें।

map.on('click', function(e) {
    var cluster = map.queryRenderedFeatures(e.point, { layers: [cluster] });

    if (cluster.length) {
        // get clustered points here
        console.log(cluster[0]);
    }
});

Jsfiddle पर उदाहरण काम https://jsfiddle.net/L3hm8rur/

29/07/2016 को 04:44
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


3 जवाब

वोट
3

दुर्भाग्य से, व्यवहार आप देख रहे हैं इस समय समर्थित नहीं है। क्लस्टर परत क्लस्टर में अलग-अलग अंक की डेटा नहीं है।

का संभावित हल अंक है कि आपके भीतर हैं के लिए अपने GeoJSON स्रोत फिल्टर करने के लिए किया जाएगा clusterRadiusक्लिक किए गए बिंदु से दूरी, और यह आप अंक आप देख रहे हैं दे देंगे।

JSFiddle: https://jsfiddle.net/aznkw784/

  • अस्वीकरण - मैं MapBox पर काम
26/08/2016 को 20:52
का स्रोत उपयोगकर्ता

वोट
0

जैसा कि पहले उल्लेख @mollymerp के रूप में, superclusterविधि है getChildren(clusterId, clusterZoom)जो क्लस्टर से बच्चों को वापस आ जाएगी।


संपादित करें

https://jsfiddle.net/denistsoi/bhzr6hpt/3/

ऊपर के उदाहरण के लिए - मैं इस्तेमाल किया getLeavesविधि है, लेकिन यह बेहतर है योजनाबद्ध तरीके से कॉल करने के लिए getChildrenऔर निर्धारित करने के लिए क्या-अपने समूहों में मौजूद प्रत्येक उत्तरोत्तर ज़ूम स्तर के नीचे सान


// GEOJSON being the valid geojson source
map.addSource('data', { 
   type: 'geojson', 
   data: [GEOJSON] 
}); 

map.on('click', function(e) {
  var cluster = map.queryRenderedFeatures(e.point, { layers: ["cluster"] });

  if (cluster.length) {
    // load values to determine cluster points & children

    var superc = supercluster({
       radius: 40,
       maxZoom: 16
    })

    superc.load(map.getSource('data').serialize().data.features);

    var children = superc.getChildren(0, map.getZoom());
    console.log(children); // returns array of children from clustered point;
  }
});
01/06/2017 को 21:21
का स्रोत उपयोगकर्ता

वोट
6

सुविधा अब Mabox जीएल जे एस पुस्तकालय में समर्थित है।

यहाँ एपीआई डॉक्टर है - https://www.mapbox.com/mapbox-gl-js/api/#geojsonsource#getclusterchildren

कैसे एक क्लस्टर के तहत अंक प्राप्त करने के लिए?

map.on('click',/* cluster layer id */ 'clusters', function (e) {

  var features = map.queryRenderedFeatures(e.point, { layers: ['clusters'] });
  var clusterId = features[0].properties.cluster_id,
  point_count = features[0].properties.point_count,
  clusterSource = map.getSource(/* cluster layer data source id */'cluster-source');

  // Get Next level cluster Children
  // 
  clusterSource.getClusterChildren(clusterId, function(err, aFeatures){
    console.log('getClusterChildren', err, aFeatures);
  });

  // Get all points under a cluster
  clusterSource.getClusterLeaves(clusterId, point_count, 0, function(err, aFeatures){
    console.log('getClusterLeaves', err, aFeatures);
  })

});
15/09/2018 को 11:30
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more