MapBox-जीएल-js छानने मार्कर समूहों

वोट
2

हम कर सकते हैं जीएल-js में अब क्लस्टर मार्कर:

https://www.mapbox.com/mapbox-gl-js/example/cluster/

वहाँ इस उदाहरण की तरह पत्रक के रूप में MapBox-जीएल-js में क्लस्टरिंग में मार्कर फिल्टर के एक बराबर तरीका है:

https://www.mapbox.com/mapbox.js/example/v1.0.0/filtering-marker-clusters/

23/03/2016 को 11:25
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
1

मैं भी इस मुद्दे में चलाने के लिए और विश्वास है कि आगे छानने क्लस्टर संग्रह में सुविधाओं की एक संपत्ति के आधार पर परतों का एक तरीका होना चाहिए है। लेकिन मेरी समझ से (और मैं ईमानदारी से आशा है कि वहाँ एक बेहतर तरीका है कि मैं बस अभी तक पता लगा नहीं किया है), वहाँ संकुल सुविधाओं को अलग करने के बाद आप स्रोत यह गुच्छेदार रूप में है उस पर घोषित एक तरीका नहीं है। का संभावित हल है कि मैं के साथ आए हैं गतिशील रूप से अपने फ़िल्टर परिवर्तन के रूप में एक स्रोत और परत जोड़ने के लिए है।

उदाहरण के लिए: आप उपश्रेणी आईडी के द्वारा फ़िल्टर कर रहे हैं, तो आप नीचे अपने मूल FeatureCollection कि कि उपश्रेणी आईडी से मेल धीरे-धीरे कम और सही पर सेट क्लस्टर के साथ कि FeatureCollection के साथ एक नया स्रोत बना सकते हैं, मार्करों के लिए अपने परत जोड़ने, और फिर अपने क्लस्टर जोड़ने वे की तरह परतों उनके उदाहरण में बाहर रखी है। और किसी भी समय है कि फिल्टर परिवर्तन, आपको लगता है कि मार्कर परत की दृश्यता टॉगल कर सकते हैं या तो (वह हिस्सा परीक्षण नहीं किया है) या बस इसे हटा दें और नया एक उन पिछले चरणों को दोहरा जोड़ें। इस दृष्टिकोण के लिए कई कमियां में से कुछ पूरे डाटासेट पर अपने नियमित रूप से फिल्टर का उपयोग करने में असमर्थता है (यदि आप किसी भी था) और इसे के रूप में performant के रूप में यदि आप फ़िल्टर का उपयोग कर रहे थे नहीं है।

आप MapBox से भूकंप डेटा का उपयोग करते हैं, कोड की तरह लग रहे हो सकता है:

var data = "https://www.mapbox.com/mapbox-gl-js/assets/earthquakes.geojson";
var filterID = 1.87; // Arbitrary number
var paredData = _.filter(data.features, function(feature){
  if (feature["Primary ID"] === filterID) {
    return feature;
  }
})

// Remove all of the layers and source associated 
// with a previous filter if needed 
if (map.getSource("earthquake-filter") { 
  map.removeLayer("earthquake-filter");
  map.removeLayer("earthquake-filter-cluster");
  map.removeLayer("earthquake-filter-cluster-count");
  map.removeSource("earthquake-filter");
}

map.addSource("earthquake-filter", {
  type: "geojson",
  data: {
    type: "FeatureCollection",
    features: paredData
  },
  cluster: true,
  clusterMaxZoom: 14,
  clusterRadius: 50
});

और जारी रखने के लिए के रूप में वे उदाहरण में करते हैं।

नहीं मेरी पसंदीदा समाधान लेकिन यह केवल एक ही है कि अब तक कि मैं मिल गया है काम करता है। उम्मीद है की यह मदद करेगा।

06/05/2016 को 17:51
का स्रोत उपयोगकर्ता

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