2012-05-10 13 views
5

मैं ItemizedIconOverlay वर्ग का उपयोग कर रहा हूँ और मैं वर्तमान में एक ही डिफ़ॉल्ट आइकन के साथ उपयोगकर्ता की स्थिति के साथ मैप पर घटनाओं को प्रदर्शित कर रहा हूँ ItemizedOverlay में जोड़ने OSMdroid।कस्टम चिह्न

मैं प्रत्येक ओवरले के लिए आइकन सेट कैसे बदलूं? ओपन स्ट्रीट मैप्स के साथ

drawable = getResources().getDrawable(R.drawable.marker); 
    drawable3 = getResources().getDrawable(R.drawable.disruption); 
    drawable2 = getResources().getDrawable(R.drawable.marker_me); 

    itemizedOverlay = new MyItemizedOverlay(drawable, mapView); 
    itemizedOverlay2 = new MyItemizedOverlay(drawable2, mapView); 
    itemizedOverlay3 = new MyItemizedOverlay(drawable3, mapView); 

मैं हर itemizedOverlay अपनी ही मार्कर है ...

कैसे मैं यह कर करते थे

वहाँ google.maps उदाहरण की तरह कुछ है?

mResourceProxy = new DefaultResourceProxyImpl(getApplicationContext()); 
this.mMyLocationOverlay = new ItemizedIconOverlay<OverlayItem>(mItems, new Glistener(), mResourceProxy); 

आपकी मदद के लिए धन्यवाद और अपनी शर्म की बात नहीं ज्यादा समर्थन इस ओपन सोर्स प्रोजेक्ट के लिए ऑनलाइन उपलब्ध है ...

उत्तर

17

मुमकिन अपने mItems की तरह बनाया OverlayItems की एक ArrayList है:

mItems = new ArrayList<OverlayItem>(); 

इस सूची में आप व्यक्तिगत ओवरलीइटम जोड़ देंगे, इसलिए जब आप प्रत्येक आइटम बनाते हैं तो आप इसे इस तरह से कर सकते हैं, इसे सूची में जोड़ने से पहले मार्कर सेट करना:

OverlayItem olItem = new OverlayItem("Here", "SampleDescription", point); 
Drawable newMarker = this.getResources().getDrawable(R.drawable.mymarker); 
olItem.setMarker(newMarker); 
mItems.add(olItem); 

जहां mymarker आपके drawables फ़ोल्डर में .png है।

अद्यतन -, पूरे ओवरले के लिए डिफ़ॉल्ट मार्कर सेट बदल

this.mMyLocationOverlay = new ItemizedIconOverlay<OverlayItem>(mItems, new Glistener(), mResourceProxy); 

को

this.mMyLocationOverlay = new ItemizedIconOverlay<OverlayItem>(mItems, newMarker, new Glistener(), mResourceProxy); 

जहां newMarker से पहले के रूप में

+0

धन्यवाद है यह काम करने के लिए! – bubbly

+0

लेकिन क्या मैं पूरे ओवरले के लिए एक डिफ़ॉल्ट मार्कर जोड़ सकता हूं? ItemizedOverlay = new MyItemizedOverlay (drawable, mapView) की तरह; और उसके बाद उस ओवरले में जोड़े गए प्रत्येक आइटम को विशिष्ट मार्कर मिल जाता है। – bubbly

+1

हां, ऐसा प्रतीत होता है कि एक और कन्स्ट्रक्टर उपलब्ध है जो एक डिफ़ॉल्ट मार्कर भी लेता है। मैं अपने उत्तर को एक अपडेट – NickT

संबंधित मुद्दे