2010-08-19 12 views
6

मेरे पास मेरे मानचित्र पर बहुत सारे मार्कर हैं। प्रत्येक मार्कर में ज़ूमिंग मुझे एक स्थिति दिखाता है। लेकिन मार्करों को ज़ूम आउट करना एक दूसरे को ओवरलैप कर रहा है और मार्कर की स्थिति निर्धारित करना अधिक कठिन है।ज़ूम द्वारा स्केल मानचित्र मार्कर, एंड्रॉइड

क्या ज़ूम कारक के आधार पर मार्कर छवि को स्केल करने का कोई तरीका है?

उत्तर

5

इस पर निर्भर करता है कि आप अपना मार्कर कैसे आकर्षित करते हैं। अपने मार्कर सिर्फ एक बिटमैप/drawable है, तो बस matrix.postScale()

Matrix matrix = new Matrix(); 
matrix.postScale(2f, 2f); // douple the size 
canvas.drawBitmap(mBitmap, matrix, mPaint); 
+0

क्या आप इसे कैसे करने के बारे में एक और विस्तृत तरीका प्रदान कर सकते हैं? – ferguior

+0

@ferguior: आपको वास्तव में क्या चाहिए? एक स्केल की गई छवि को चित्रित करने के बाद अब मुझे पोस्ट किया गया है ... – WarrenFaith

+1

मेरा संदेह स्केलिंग को संभालने, इसे कब करना है और इसे मापने के तरीके के बारे में अधिक है ताकि मैं सही पैमाने पर आवेदन कर सकूं। साथ ही, यह कोड आपने पोस्ट किया है, किस वर्ग में यह जाएगा? मानचित्र दृश्य में, या ओवरलेइटम में, या ItemizedItem में? – ferguior

2

मार्करों का उपयोग ज़ूम के आधार पर आकार नहीं बदलते। यदि आप इस प्रभाव की इच्छा रखते हैं तो ग्राउंड ओवरलेज़ का उपयोग करें। src

GoogleMap map = ...; // get a map. 
BitmapDescriptor image = ...; // get an image. 
LatLngBounds bounds = ...; // get a bounds 
// Adds a ground overlay with 50% transparency. 
GroundOverlay groundOverlay = map.addGroundOverlay(new GroundOverlayOptions() 
    .image(image) 
    .positionFromBounds(bounds) 
    .transparency(0.5)); 

एक भू ओवरले एक छवि है कि एक नक्शा करने के लिए तय की और मानचित्र ज़ूम के साथ मापता है। अधिक जानकारी के लिए API देखें

+0

में' draw() 'विधि का उपयोग कर सकते हैं लेकिन फिर आपको स्थिति की आपूर्ति के बजाय ग्राउंड ओवरले की सीमाओं की गणना करना होगा। यह इसे आदर्श समाधान से कम बनाता है। –

0

एक साधारण रूप है।

Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.raw.ic_car_1); 
BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(bitmap); 
     googleMap.addGroundOverlay(new GroundOverlayOptions() 
      .image(bitmapDescriptor) 
      .position(latLng,100));