2010-04-15 16 views
9

मैं एंड्रॉइड मानचित्र पर कई अलग-अलग मार्कर जोड़ना चाहता हूं। मेरा कोड अब तक एक ही ओवरले के साथ अच्छा काम करता है:Google एंड्रॉइड मानचित्र पर विभिन्न नामांकित मार्कर

mapOverlays = mapView.getOverlays(); 
drawable = this.getResources().getDrawable(R.drawable.marker); 
itemizedOverlay = new MyItemizedOverlay(drawable); 
OverlayItem overlayItem = new OverlayItem(geoPoint, "foo", "bar"); 
mapOverlays.add(itemizedOverlay); 

यह अब तक ठीक काम करता है। लेकिन हर मार्कर एक जैसा है। मैं अब क्या करना चाहता हूं मानचित्र पर अलग-अलग मार्कर हैं जो आप Google मानचित्र वेबैप ("ए" नामक एक मार्कर, अगले एक "बी", और इसी तरह) पर देखते हैं। मैं इसे कैसे प्राप्त कर सकता हूं? क्या मुझे अपने ऐप में एक अतिरिक्त पीएनजी मार्कर फ़ाइल जोड़नी है? (marker_a.png, marker_b.png, ...) या यह हासिल करने का एक आसान तरीका है? यह भी हो सकता है कि 26 से अधिक परिणाम होंगे ताकि मुझे संभवतः मार्करों के विभिन्न रंगों की आवश्यकता हो।

उत्तर

1

हाँ, यदि आप किसी अन्य png की जरूरत है, तो यह इस प्रकार दिखाई देगा:

mapOverlays = mapView.getOverlays(); 

// All "A"s 
drawable = this.getResources().getDrawable(R.drawable.marker_a); 
itemizedOverlay = new MyItemizedOverlay(drawable); 
OverlayItem overlayItem = new OverlayItem(geoPoint, "foo", "bar"); 
mapOverlays.add(itemizedOverlay); 

// All "B"s 
drawable = this.getResources().getDrawable(R.drawable.marker_b); 
itemizedOverlay = new MyItemizedOverlay(drawable); 
OverlayItem overlayItem = new OverlayItem(geoPoint, "foo", "bar"); 
mapOverlays.add(itemizedOverlay); 
4

Here is a sample project एक भी ItemizedOverlay पर कई अलग अलग PNG का दिखा। आपको अलग-अलग पीएनजी को संभालने के लिए बस कुछ ड्राइंग विधियों को ओवरराइड करना होगा।

22

उत्तर में से एक प्रत्येक मार्कर समूह के लिए विभिन्न ItemizedOverlay के साथ समाधान प्रदान करता है। आप overlayItem.setMarker(drawable)

बुला आप संसाधनों से अपने मार्कर लोड करने के लिए जा रहे हैं द्वारा एक ItemizedOverlay के साथ एक ही प्राप्त कर सकते हैं, तो नहीं कॉल करने के लिए:

drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); 

इससे पहले कि आप setMarker कहते हैं। अन्यथा मार्कर नहीं दिखाए जाएंगे।

मार्कर Drawable टाइप करते हैं, इसलिए आप उन्हें रन-टाइम बनाने सहित अन्य Drawable की तरह प्राप्त कर सकते हैं।

+1

टिप के लिए धन्यवाद, बहुत अच्छी तरह से काम करता है। यदि आपका मार्कर अपनी छाया के सापेक्ष सही ढंग से प्रदर्शित नहीं होता है तो http://stackoverflow.com/questions/3515638/mapview-marker-shadow भी देखें। – Dr1Ku

1

मैं भी एक ही स्थिति में फंस गया था और मैं नंबर पर पिन ए, बी, सी के insted चाहता था ..

अच्छा समाचार है कि मैं समाधान नहीं मिला है। मैंने केवल पिन पृष्ठभूमि के साथ एक टेक्स्ट व्यू बनाया और गतिशील रूप से एक संख्या डाली और इसे ड्रायबल में परिवर्तित कर दिया।

आप पिन रंग पृष्ठभूमि के साथ अलग-अलग टेक्स्ट व्यू बना सकते हैं जो आप चाहते हैं।

यहां मेरे प्रश्न के लिए link है जिसका मैंने उत्तर दिया है।

OverlayItem crtItem = new OverlayItem(getPoint(Double.parseDouble(latCoordRow),Double.parseDouble(longCoordRow)), nameRow , addressRow); 

    Drawable crtMarker = markerIconsArray.get(categoryRow); //my current drawable (from a HashMap) 
    crtItem.setMarker(crtMarker); // set new marker 
    crtMarker.setBounds(0, 0, crtMarker.getIntrinsicWidth(),crtMarker.getIntrinsicHeight()); //setBounds 
    boundCenterBottom(crtMarker); //correct shadow problem 

आप setBounds अपने drawable दिखाएगा नहीं होगा यदि नहीं: :)

0

मैं इस कोड का इस्तेमाल किया।

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