MapBox जीएल जे एस प्रदर्शन अंतर का कारण

वोट
6

इस प्रश्न का कोई है जो MapBox जीएल जे एस के आंतरिक भागों को समझता है के लिए है।

मैं MapBox जीएल जे एस उपयोग कर रहा हूँ अप करने के लिए 40,000 बहुभुज, जिनमें से प्रत्येक कि बहुभुज के मालिक के आधार पर रंग का का एक भौगोलिक नक्शा प्रस्तुत करना। वहाँ के मालिक और प्रत्येक बहुभुज के मालिक प्रति आम तौर पर अधिक बहुभुज समय के साथ बदल सकते हैं। मालिकों की संख्या 1000 के आसपास एक से भिन्न हो सकते हैं। मैं प्रदर्शन की समस्याओं (जो मैं इसे कैसे दृष्टिकोण के आधार पर बदलती) आ रही है, तो मैं कुछ अलग रणनीति की कोशिश की है।

  1. भरने के रंग, जहां मैं एक ही स्रोत और एक परत के लिए डेटा पर ही आधारित स्टाइल का उपयोग करना। मैं दोनों बहुभुज आईडी और डेटा-प्रेरित स्टाइल के लिए श्रेणी के रूप में मालिक आईडी की कोशिश की है।
  2. फ़िल्टर किया परतें, जहां मैं एक मालिक के लिए एक ही स्रोत और एक अलग परत है का उपयोग करना। फिर से, मैं दोनों बहुभुज आईडी और छानने के लिए मापदंड के रूप में मालिक आईडी की कोशिश की है।
  3. प्रत्येक मालिक के लिए एक अलग स्रोत और परत का उपयोग करना।

विकल्प तीन सबसे अच्छा ड्राइंग की गति है। परतों बहुत तेजी से मैं ज़ूम और पैन के रूप में प्रदान की जाती हैं। लेकिन मैं setData कॉल करने के लिए जब भी मैं एक परत के स्वामी को बदलने और setData स्मृति लीक तो मैं अंत में पेज क्रैश होने के साथ खत्म होता है। यह समस्या, 2607 है, जो कार्रवाई नहीं के रूप में बंद हो गया है, इसलिए मैं इस के लिए एक समाधान की आशा नहीं है।

विकल्प एक और दो प्रारंभिक ज़ूम के साथ ठीक आकर्षित, लेकिन जब मैं वे में ज़ूम बहुत टाइल्स को फिर से आकर्षित करने के लिए धीमी गति से कर रहे हैं। मैं दांतेदार, कम विस्तार टाइल्स को देख अटक कर रहा हूँ जब तक प्रतिपादन 20-30 सेकंड के बाद पकड़ता। ध्यान दें कि यदि मैं बहुभुज आईडी के बजाय मालिक आईडी का उपयोग, मैं अभी भी जब मालिक परिवर्तन जो स्मृति रिसाव के लिए नेतृत्व करेंगे setData कॉल करने के लिए की जरूरत है। अगर मैं बहुभुज आईडी का उपयोग, मैं सिर्फ परत फिल्टर को अपडेट करने या जब मालिक परिवर्तन को भरने के रंग श्रेणियों की जरूरत है। हालांकि, मैं एक ध्यान देने योग्य प्रदर्शन अंतर अगर मैं बहुभुज आईडी उपयोग करती हैं इसलिए मुझे लगता है कि ठीक है नहीं मिलता है।

तो मेरे सवाल क्यों इतना तेजी से प्रस्तुत करने के लिए जब मैं में ज़ूम विकल्प तीन है? यह ड्राइंग करने के लिए सौंपा श्रमिकों की संख्या के साथ क्या करना है? विकल्प एक और दो में, वहाँ एक ही स्रोत तो इसका मतलब यह ड्राइंग केवल एक ही कार्यकर्ता उपयोग कर रहा है करता है? विकल्प तीन में जबकि, वहाँ तो मैं ड्राइंग कर कई श्रमिकों है प्रत्येक मालिक के लिए एक अलग स्रोत है?

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


2 जवाब

वोट
1

मुझे लगता है कि आप को हल करने के क्या अनिवार्य रूप से विस्तार (LOD) समस्या का एक स्तर है विभिन्न तकनीकों का आवश्यकता होगी। मैं इसी तरह के कार्य एक देश की ड्राइंग पाली क्षेत्रों को शामिल राज्य के भीतर विभिन्न जिलों से संकेत मिलता है किया है और आप दृश्य सूट करने के लिए डेटा पैमाने पर करने के लिए है।

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

दूसरी सिफारिश दृश्य अंतरिक्ष culling है। यही है, अगर एक क्षेत्र दृश्य पोर्ट के भीतर नहीं है, यह प्रस्तुत करना नहीं है! आप इस शिखर-सही करने के लिए प्रयास करते हैं तो आप एक ही सीपीयू की समस्याओं के साथ खत्म हो जाएगा के रूप में तो इससे पहले कि मैं एक क्षेत्र सीमांकन बॉक्स बनाने (यदि आप एक सुझाव प्रस्तावित उपयोग कर रहे हैं अक्ष गठबंधन केवल देखने, के रूप में यह सबसे आसान है की सलाह देते हैं उपाय)।

आप गैर अक्ष गठबंधन क्षेत्रों की जरूरत है, बस एक सीमांकन वृत्त (एक त्रिज्या क्षेत्र के जिओसेंटर से सबसे बड़ी दूरी पर सीमा शिखर के आधार पर) के साथ पैदा करते हैं।

मेरा सुझाव है कि अपने विभिन्न कठिनाइयों दृश्य जटिलता समस्या का एक व्युत्पन्न हैं। कि समाधान और आप के साथ काम करने के लिए एक और अधिक कुशल प्रणाली होगा।

सौभाग्य!

04/12/2016 को 23:08
का स्रोत उपयोगकर्ता

वोट
2

मैं एक करने की अनुशंसा data-joinका उपयोग कर स्पष्ट डेटा पर ही आधारित शैलियों। यह आपको अपनी ज्यामिति से अपने डेटा संपत्ति अपडेट दसगुणा अनुमति देता है।

की जाँच करें https://www.mapbox.com/mapbox-gl-js/example/data-join/ के लिए वेक्टर टाइल ज्यामिति ब्राउज़र में JSON डेटा में शामिल होने के लिए कैसे का एक उदाहरण के लिए। यह अच्छी तरह से करने के लिए 100 + हजार सुविधाओं पैमाने पर करना चाहिए।

14/01/2017 को 16:43
का स्रोत उपयोगकर्ता

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