नक्शा बॉक्स js; लेबल छिपाने और शो

वोट
1

मैं जावास्क्रिप्ट के साथ पहले भी काम नहीं किया है। मैं एक नक्शा जहां विभिन्न परतों उपयोगकर्ताओं पसंद के अनुसार छिपा हो सकता है बनाने के लिए कोशिश कर रहा हूँ। मैं कम से सटीक कोड दिखा नक्शा बॉक्स पर उपयोगी उदाहरण में आए https://www.mapbox.com/mapbox-gl-js/example/toggle-layers/

अब, मेरी समस्या है, क्योंकि मैं अलग परिमाण के कई बिंदु परतें होती हैं, मैं कई परतों बनाने और उन्हें वांछित विशेषता के आधार पर फिल्टर करने के लिए इसलिए प्रत्येक अंक उपस्थिति है कि विशिष्ट परिमाण को दर्शाता है मजबूर किया गया। हालांकि, मैं इन सभी बिंदुओं साल में आयोजित किया जाना चाहते हैं, तो मैं परतों वर्गीकृत किया। तो मेरे सभी परत नाम कुछ इस तरह दिखाई (2006_mag2,2006_mag8,2010_mag3 ...)।

हालांकि, मैं साल के आधार पर परतों को दिखाने के लिए छिपाने / शो विकल्प चाहते हैं। तो मैं सोच रहा था जैसे हम एसक्यूएल में उपयोग (यानी 2006% 'या एक तरह ऑपरेटर) मैं ऑपरेटर किसी प्रकार का कर सकता है। कुछ पोस्ट बहुत से लोगों को जावास्क्रिप्ट में उपयोग '*' पर देख रहे हैं? तो यह क्या यह एक परत को व्यक्तिगत रूप से पहले के लिए दिखाई देंगे है:

var toggleableLayerIds = [ '2006_mag2', '2010_mag3' ];

for (var i = 0; i < toggleableLayerIds.length; i++) {
    var id = toggleableLayerIds[i];
}

और यह मेरा समूह परतों की संख्या एक साथ की कोशिश कर रहा पर कच्ची प्रयास है:

var toggleableLayerIds = [ '2006.*', '2008.*' ];

for (var i = 0; i < toggleableLayerIds.length; i++) {
    var id = toggleableLayerIds[i];
}

किसी भी मार्गदर्शन तुम लोग प्रदान कर सकते हैं बहुत सराहना की जाएगी।

01/09/2016 को 17:52
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
0

आप दिनांक के आधार पर समूह layerIds करने के लिए regex के साथ छोरों इस्तेमाल करने की कोशिश कर सकता है। खेद है कि मैं अपने चर का नाम बदल दिया है। यह आपको तारीख के आधार पर वर्गीकृत layerIds के साथ एक वस्तु मिल जाएगा।

    var layerIds = [ '2006_mag2', '2010_mag3', '2006_mag8', '2006_mag1', '2008_mag2'];
    var dates = ['2006', '2010'];
    var groupedLayers = {};

    //init your object to have a member for each date
    //this could be done inside the loops below by testing if the array exists before pushing the matching layerId
    for (var i=0; i < dates.length; i++) {
      groupedLayers[dates[i]] = [];
    }
    
    //loop over your layerIds to match with the RegExp
    for (var i=0; i < layerIds .length; i++) {
        for (var j=0; j < dates.length; j++) {
            var searchPattern = new RegExp('^' + dates[j]);
            if (searchPattern.test(layerIds[i])) {
                groupedLayers[dates[j]].push(layerIds[i]);
            }
         }
    }

    console.log(groupedLayers)

कृपया मुझे बताओ कि सटीक परिणाम तुम इतनी जरूरत है मैं आपको और अधिक मदद कर सकता है।

01/09/2016 को 18:25
का स्रोत उपयोगकर्ता

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