2013-08-05 2 views
41

मैं कोड के इस भाग का उपयोग कर रहा गूगल मानचित्र संस्करण में एक MapFragment में एक मार्कर जोड़ने के लिए 2.सेट छवि 2

MarkerOptions op = new MarkerOptions(); 
op.position(point) 
    .title(Location_ArrayList.get(j).getCity_name()) 
    .snippet(Location_ArrayList.get(j).getVenue_name()) 
    .draggable(true); 
m = map.addMarker(op); 
markers.add(m); 

मैं अपने drawable से विभिन्न चित्रों का उपयोग करना चाहते हैं । किसी भी तरह की सहायता को आभार समझेंगे।

+6

क्या 'BitmapDescriptor आइकन = BitmapDescriptorFactory.fromResource (R.drawable.current_position_tennis_ball)' और फिर सेशन। आइकन (आइकन); –

+0

आपके उत्तर के लिए श्रीबाबर थेंक्स यह अच्छा है और मेरे लिए काम किया है ... यू इसे उत्तर के रूप में पोस्ट करें और मैं इसे स्वीकार करूंगा ... Thanx Again। – NRahman

+0

@ मुहम्मदबाबर हम शीर्षक – Amitsharma

उत्तर

93

इस प्रकार आप Drawable को Marker के रूप में सेट कर सकते हैं।

BitmapDescriptor icon = BitmapDescriptorFactory.fromResource(R.drawable.current_position_tennis_ball) 

MarkerOptions markerOptions = new MarkerOptions().position(latLng) 
     .title("Current Location") 
     .snippet("Thinking of finding some thing...") 
     .icon(icon); 

mMarker = googleMap.addMarker(markerOptions); 

VectorDrawables और XML आधारित Drawablesनहीं इस के साथ काम करते हैं।

+18

में शीर्षक पास करना चाहता हूं यह सही है, हालांकि "किसी भी" ड्रॉबल शब्द का उपयोग गलत है। यह केवल आपको बिटमैप ड्रायबल्स सेट करने की अनुमति देता है। उदाहरण के लिए, आप इसके साथ एक्सएमएल से एक ड्रॉबल सेट नहीं कर सकते हैं। –

+3

ठीक है, आप कर सकते हैं - आपको इसे पहले 'कैनवास' ('drawable.draw (कैनवास)' में पेंट करने की आवश्यकता है), फिर 'कैनवास' को 'बिटमैप' पर डंप करें। –

+2

वैसे दोस्तों मुझे वास्तव में इस बारे में कोई जानकारी नहीं है! इसलिए ऊपर वोट दें कि कौन सही है :) –

6

यदि आप Drawable प्रोग्राम के पैदा की है (ताकि आप इसके लिए कोई संसाधन है), तो आप इस का उपयोग कर सकते हैं:

Drawable d = ... // programatically create drawable 
Canvas canvas = new Canvas(); 
Bitmap bitmap = Bitmap.createBitmap(d.getIntrinsicWidth(), d.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); 
canvas.setBitmap(bitmap); 
d.draw(canvas); 
BitmapDescriptor bd = BitmapDescriptorFactory.fromBitmap(bitmap); 

तो फिर तुम BitmapDescriptor, जो आप MarkerOptions में पारित कर सकते हैं।

+0

यह मेरे लिए खाली छवियां बनाता है –

+0

कृपया इस दृष्टिकोण के पूरी तरह से काम करने वाले उदाहरण के लिए @ vovaost द्वारा पोस्ट किया गया उदाहरण देखें। यह जवाब बिल्कुल पूरा नहीं है। – Alex

42

@ लुकास नोवाक उत्तर कुछ भी नहीं दिखा रहा है क्योंकि आपको Drawable पर सीमाएं भी सेट करनी होंगी।
यह किसी भी ड्रॉइंग के लिए काम करता है। यहाँ एक पूरी तरह से काम कर रहे उदाहरण है:

public void drawMarker() { 
    Drawable circleDrawable = getResources().getDrawable(R.drawable.circle_shape); 
    BitmapDescriptor markerIcon = getMarkerIconFromDrawable(circleDrawable); 

    googleMap.addMarker(new MarkerOptions() 
      .position(new LatLng(41.906991, 12.453360)) 
      .title("My Marker") 
      .icon(markerIcon) 
    ); 
} 

private BitmapDescriptor getMarkerIconFromDrawable(Drawable drawable) { 
    Canvas canvas = new Canvas(); 
    Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); 
    canvas.setBitmap(bitmap); 
    drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); 
    drawable.draw(canvas); 
    return BitmapDescriptorFactory.fromBitmap(bitmap); 
} 


circle_shape.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> 
    <size android:width="20dp" android:height="20dp"/> 
    <solid android:color="#ff00ff"/> 
</shape> 
+0

यह वास्तव में एक पूरी तरह से काम कर रहा उदाहरण है। धन्यवाद – Odys

+0

मेरा पहला मार्कर दूसरों की तुलना में बड़ा खींचा गया है, मैं आपके साथ बिल्कुल वही कोड का उपयोग करता हूं। कारण क्या हो सकता है? यह छवि स्रोत से स्वतंत्र है जिसे मैंने दूसरों के साथ प्रयास किया था। – Recomer

+0

मुझे नहीं पता। कुछ कोड पोस्ट करें: यदि आप इसे प्रोग्रामेटिक रूप से बनाते हैं तो ड्रॉ करने योग्य xml या कोज़ ड्रॉइंग बनाने के लिए उपयोग किया जाता है। – vovahost

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