2012-04-09 10 views
5

अब मैं drawable उपयोग कर रहा था मेरी नक्शे पर मार्कर को भरने के लिए अब मैं सोच रहा था यह शांत हो सकता है अगर मैं नक्शे में कोई मार्कर के रूप में कस्टम imageView प्रदर्शित कर सकता है जब तक।एंड्रॉइड: Google मानचित्र एपीआई एंड्रॉइड में मार्कर के रूप में imageView कैसे सेट करें?

अब तक मैं इसे पसंद

 itemized= new Itemazide(drawable, mContext); 

मैं की तरह

this

उत्तर

1

हाँ मैं अगर मैं कुछ इस तरह कर सकता है, यानी एक कस्टम दिखाने सोच रहा था कुछ हासिल करना चाहते हैं कर रहा हूँ View खींचने योग्य के बजाय। आप draw() विधि को ओवरराइड कर सकते हैं, लेकिन दुर्भाग्य से यह हमेशा (कोई मुझे बताएं कि मैं गलत हूं) को आकर्षित करने योग्य होना चाहिए। मुझे लगता है कि ऐसा इसलिए है क्योंकि कस्टम View बहुत अधिक स्मृति लेगा।

कहा जा रहा है, तुम क्या यह शायद कुछ इसी तरह प्रभाव को प्राप्त करने mapview-baloon पुस्तकालय हैक करने संभव है प्राप्त करने के लिए कोशिश कर रहे हैं पर निर्भर करता है।

संपादित करें: अब आप से पता चला है कि मैं क्या आप प्राप्त करना चाहते हैं लगता है कि आप अपने OverlayItem में draw() ओवरराइड और इस विधि में करना चाहिए अपने ImageView बढ़ा देते हैं। लेकिन मैं इसे इस तरह से करने की कोशिश नहीं की थी, इसलिए वहाँ कुछ कमियां हो सकता है (मैं एक बहुत एक समान बात है कि दावा किया पर थ्रेड, कि यह इस OverlayItem पर सभी स्पर्श ईवेंट को बीच में होगा याद)।

+0

मैं इस में देख रहा था और अब मैं लागू करने के लिए की सुविधा देता है देखने की कोशिश कर रहा हूँ ... – Akram

+0

MapView-baloon अपनी अलग बात – Akram

+0

यह आप को बढ़ाने के लिए जो कुछ भी 'View' (कस्टम सहित' ImageView') की अनुमति देता है । लेकिन इसके बजाय ** 'ड्रायरेबल' की बजाय ** इसके बजाय नहीं, लेकिन आप हमेशा पारदर्शी ड्रॉइंग का उपयोग कर सकते हैं)। और मुझे लगता है कि इसे हैक करना मुश्किल नहीं होना चाहिए, इसलिए यह टैप पर नहीं दिखता है, बल्कि हमेशा। –

2

मैं थोड़ी देर हो चुकी हो सकता है, लेकिन मैं जो दूसरों सामना करना पड़ा है/ने वही समस्या का सामना कर रहे के लिए एक समाधान पोस्ट करेंगे। तो बुनियादी तौर पर आप क्या करना है (कम से कम समाधान आप मांग कर रहे हैं के लिए, यानी एक कस्टम छवि एक बॉक्स की तरह पृष्ठभूमि पर लगाए गए) एक कैनवास की मदद से पृष्ठभूमि बॉक्स पर customImage लागू है। आप प्रभावी रूप से कैनवास कि आप तो अपने 'ओवरले'/के लिए एक मार्कर के रूप में प्रदान कर सकते हैं से एक BitmapDrawable बना सकते हैं इस कार्यान्वयन का उपयोग करते हुए 'ItemizedOverlay'। इसके अलावा, कृपया प्रत्येक ओवरले के लिए एक छवि दृश्य बनाने से बचें क्योंकि यदि आप हजारों ऐसे छवि दृश्यों को एक साथ सौदा करना चाहते हैं तो यह आपकी स्मृति/आपके ऐप को पूरी तरह से नष्ट कर देगा। इसके बजाए, बिटमैप ड्रावेबल्स का उपयोग करें जिन्हें उनके निर्माण के दौरान ओवरले को असाइन किया जा सकता है और एक छवि दृश्य के रूप में लगभग पर्याप्त स्मृति का उपभोग नहीं करते हैं।

public BitmapDrawable imageOnDrawable(int drawableBackground, Bitmap customImage) 
{ 
    //The following line is optional but I'd advise you to minimize the size of 
    //the size of the bitmap (using a thumbnail) in order to improve draw 
    //performance of the overlays (especially if you are creating a lot of overlays). 

    Bitmap customImageThumbnail = ThumbnailUtils.extractThumbnail(
                customImage, 100, 100); 

    Bitmap bm = BitmapFactory.decodeResource(getResources(), drawableId); 
    bm = Bitmap.createScaledBitmap(bm, 112, 120, false); 

    Canvas canvas = new Canvas(bm); 
    canvas.drawBitmap(bm, 0, 0, null); 
    // The 6,6 in the below line refer to the offset of the customImage/Thumbnail 
    // from the top-left corner of the background box (or whatever you want to use 
    // as your background) 
    canvas.drawBitmap(customImageThumbnail, 6, 6, null); 

    return new BitmapDrawable(bm); 

} 
1
In google mapv2, map-view ballon like functionality is provided by default. 
Just, you have to write some lines for it : 

private GoogleMap mapView; 

if (mapView == null) 
      mapView = ((MapFragment) getFragmentManager().findFragmentById(
        R.id.map_view)).getMap(); 

     mapView.getUiSettings().setMyLocationButtonEnabled(false); 
     mapView.setMyLocationEnabled(true); 

MarkerOptions markerDestinationOptions; 
markerDestinationOptions = new MarkerOptions() 
        .position(latLngDestination)    .icon(BitmapDescriptorFactory.fromResource(R.drawable.marker)); 

mapView.addMarker(markerDestinationOptions); 
संबंधित मुद्दे