2012-12-04 13 views
27

जोड़ते समय बहुत धीमी है, मैं नए Google मानचित्र एंड्रॉइड एपीआई v2 का उपयोग करने के लिए एक मौजूदा एंड्रॉइड ऐप अपडेट कर रहा हूं। मेरे पास लगभग 2500 मार्कर हैं जो मैं मानचित्र में जोड़ना चाहता हूं। एपीआई के पुराने संस्करण के साथ मैंने 2500 मार्कर होने पर नक्शे की प्रतिक्रिया को भयानक पाया, इसलिए मुझे मानचित्र के वर्तमान दृश्य क्षेत्र में केवल मार्कर जोड़कर इसके आसपास काम करना पड़ा।Google मानचित्र एंड्रॉइड एपीआई v2 बहुत धीमी मार्कर

मुझे उम्मीद थी कि नए एपीआई के साथ 2500 मार्कर तेज होंगे, लेकिन यह अभी भी एक नेक्सस 4 पर भी भयानक है, और मुझे क्लस्टरिंग करने के लिए कोई भी विकल्प नहीं दिख रहा है।

तो मेरा प्रश्न: मैं कैसे निर्धारित कर सकता हूं कि मानचित्र के दृश्य क्षेत्र में कोई निश्चित अक्षांश/एलएनजी बिंदु निहित है या नहीं?

मैंने प्रलेखन में VisibleRegion पर देखा है, लेकिन मेरे पास अब तक कोई भाग्य नहीं है। कोई भी मदद बहुत ही सराहनीय होगी।

* साइड नोट: आईओएस एमकेमैपव्यू (गूगल मैप्स या ऐप्पल मैप्स) पर 2500 मार्कर एक आईफोन 3gs के साथ भी बहुत चिकनी और उत्तरदायी है। मैं अभी भी समझ नहीं पा रहा हूं कि एंड्रॉइड पर यह इतना धीमा क्यों है, यहां तक ​​कि नवीनतम और सबसे बड़े हार्डवेयर के साथ भी।

उत्तर

50

ठीक है, मैं पता लगा कुछ और बातें की कोशिश कर के बाद अगर एक भी बिंदु दिखाई क्षेत्र में है निर्धारित करने के लिए कैसे, और यह बहुत सरल है:

//Note: this.mMap is an instance of GoogleMap 

LatLngBounds bounds = this.mMap.getProjection().getVisibleRegion().latLngBounds; 

LatLng markerPoint = new LatLng(item.getLatitude(), item.getLongitude()); 

if(bounds.contains(markerPoint)) 
{ 
    this.mMap.addMarker(new MarkerOptions(...));  
} 

* ध्यान दें कि GoogleMap का प्रक्षेपण हो रही है एक महंगा ऑपरेशन, इसलिए यदि आप मार्कर बनाने और उन्हें मानचित्र में जोड़ने के लिए वस्तुओं की एक लंबी सूची के माध्यम से लूपिंग कर रहे हैं, तो लूप से पहले एक बार प्रक्षेपण को पकड़ लें।

अद्यतन

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

Hiding and Showing on screen Markers with Google Maps Android API V2

+4

अपने उत्कृष्ट ब्लॉगपोस्ट – subash

+0

के लिए धन्यवाद वहाँ वैसे भी होगा क्रम में यह उल्टा करने के लिए यदि मानचित्र पर मार्कर हैं लेकिन वर्तमान स्क्रीन/व्यू/सीमाओं के बाहर हैं? –

+1

एकाधिक क्लस्टर मैनेजर के साथ एकीकृत, एक आकर्षण की तरह काम करता है। जब सभी मार्करों को रखकर तुलना की जाती है, तो यह समाधान क्लस्टर को थोड़ा सा पुन: पुन: गणना/पुन: गणना करने का कारण बनता है, लेकिन यह एक बड़ा प्रदर्शन लाभ देने में बिल्कुल ठीक है। धन्यवाद @ डिस्कोडेव – DayDayHappy

13

Android पर एक क्लस्टरिंग समाधान आप का प्रयास करने के Android नक्शे एक्सटेंशन चाहते हो सकता है के लिए: इंगित करने के लिए सक्षम होने के लिए https://github.com/mg6maciej/android-maps-extensions

+0

यह वास्तव में अच्छा लग रहा है, मैं इसे आजमाने के लिए इंतजार नहीं कर सकता। – DiscDev

+0

@ MaciejGórski यह एक अच्छी पुस्तकालय है। मुझे उम्मीद है कि इसका वर्णन करने के लिए इसमें कुछ समर्थन दस्तावेज हैं। –

+1

@ खलीलअलेनेज़ी मुझे भी उम्मीद है। चूंकि यह खुला स्रोत है, कोई भी कुछ दस्तावेज बनाकर योगदान कर सकता है (उदाहरण के लिए गिटहब पर विकी)। मेरे लिए सबसे अच्छा दस्तावेज एक डेमो ऐप है। –