Android में Google मानचित्र से स्पष्ट मार्कर


83

मैंने खंड गतिविधि पर मानचित्र जोड़ा है और AddMarker फ़ंक्शन का उपयोग करके कई मार्कर जोड़े हैं, लेकिन मैं सभी मार्करों को निकालने में सक्षम हूं, मुझे मार्करों की विभिन्न सूची के लिए अधिसूचना मिल रही है,

अब मैं सभी मार्करों को निकालना और नया जोड़ना चाहता हूं।

सभी मार्करों को सूची में रखने और एक-एक करके निकालने का एक तरीका, (मार्कर.्रेमोव ())

क्या सभी मार्कर को साफ़ करने का कोई बेहतर तरीका है।


2
स्पष्ट है () विधि
मार्को निकोफोरोविच

जवाबों:


203

यदि आप "मानचित्र से सभी मार्कर, ओवरले और पॉलीलाइन" साफ़ करना चाहते हैं, तो अपने उपयोग clear()करेंGoogleMap


1
क्या मुझे ऐसा करने से पहले सभी को हटाने () को कॉल करना चाहिए? मेरा मतलब है, अगर मेरे पास अभी भी उन मार्करों के साथ एक ArrayList है, तो मुझे लगता है कि मैं अभी भी उन मार्करों के लिए एक सक्रिय संदर्भ दे रहा हूं, इसलिए वे मैप को क्लियर करने पर भी मेमोरी पर बने रहेंगे। क्या मैं इस बारे में सही हूं या नक्शा साफ करने से मार्करों के संदर्भ मिट जाते हैं?
चार्ली-ब्लेक

5
@ santirivera92: "क्या मुझे ऐसा करने से पहले उन सभी को हटाने () को कॉल करना चाहिए?" - AFAIK, आप की जरूरत नहीं होनी चाहिए। "अगर मेरे पास अभी भी उन मार्करों के साथ एक ArrayList है, तो मुझे लगता है कि मैं अभी भी उन मार्करों के लिए एक सक्रिय संदर्भ दे रहा हूं, इसलिए वे मानचित्र को खाली करने पर भी स्मृति में बने रहेंगे" - हाँ, लेकिन यह आपका कोड है, Google का नहीं । यदि आपMarker मानचित्र से अलग से वस्तुओं को पकड़ते हैं , तो आपको उन लोगों को जाने देना होगा। clear()उन्हें नेत्रहीन हटा देगा ।
कॉमन्सवेयर

1
@ santirivera92: हाँ, यह चाहिए। और कुछ नहीं होना चाहिए उन पर पकड़।
कॉमन्सवेयर

8
यह भी ध्यान दें कि clear()फ़ंक्शन Markerआईडी को रीसेट नहीं करेगा । मूल रूप से आप m0नए Markerजोड़ने के लिए फिर से नहीं मिलेगा ।
प्रसाद डी जॉयसा

2
@ प्रसाद क्या फिर से m0 पाने का कोई तरीका है?
गोचन अरिक

4

यदि आप पॉलीलाइन को साफ नहीं करना चाहते हैं और केवल मार्करों को हटाने की आवश्यकता है तो नीचे दिए गए चरणों का पालन करें।

सबसे पहले नीचे की तरह एक नया मार्कर ऐरे बनाएं

List<Marker> AllMarkers = new ArrayList<Marker>();

फिर जब आप गूगल मैप्स पर मार्कर जोड़ते हैं तो उन्हें मार्कर ऐरे (इसके उदाहरण में AllMarkers) से भी जोड़ते हैं।

for(int i=0;i<places.length();i++){

                LatLng location = new LatLng(Lat,Long);
                MarkerOptions markerOptions = new MarkerOptions();
                markerOptions.position(location);
                markerOptions.title("Your title");

                 Marker mLocationMarker = Map.addMarker(markerOptions); // add the marker to Map
                    AllMarkers.add(mLocationMarker); // add the marker to array

                }

फिर अंत में सभी मार्करों को एक बार में हटाने के लिए नीचे दी गई विधि को कॉल करें

 private void removeAllMarkers() {
        for (Marker mLocationMarker: AllMarkers) {
            mLocationMarker.remove();
        }
        AllMarkers.clear();

    }

सभी मार्करों को हटाने के लिए कहीं से भी कॉल करें

removeAllMarkers();

मुझे यह समाधान तब मिला जब मैं पॉलीलाइन्स को साफ किए बिना केवल मानचित्र मार्करों को हटाने का एक तरीका ढूंढ रहा था। आशा है कि यह आपकी भी मदद करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.