2013-08-05 19 views
41

2.Seti Görüntü kod bu kısmını kullanıyorum 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); 

benim çekilebilir farklı görüntüleri kullanmak istediğiniz Google Harita Versiyonu bir MapFragment bir işaretçi ekleyin . Herhangi bir yardım takdir edilecektir.

+6

'BitmapDescriptor simgesi = BitmapDescriptorFactory.fromResource (R.drawable.current_position_tennis_ball)' ve ardından op yapın. simgesi (simge); –

+0

Cevabınız için teşekkür ederim Bay.Babar iyi ve benim için çalıştı ... U bir cevap olarak gönderip kabul edeceğim ... Thanx Tekrar. – NRahman

+0

@MuhammadBabar – Amitsharma

cevap

93

Bu, Drawable'u Marker olarak nasıl ayarlayabilirsiniz.

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 ve XML

bununla değil işi Drawables tabanlı. programlama yoluyla Drawable oluşturduysanız

+18

Bu doğru, ancak "Herhangi" çekilebilir kelimesinin kullanımı yanlıştır. Bu sadece BitmapDrawables'ı ayarlamanıza izin verir. Örneğin, bununla birlikte xml'den bir çizim yapamazsınız. –

+3

Eh, yapabilirsiniz - sadece bir "Tuval" ("drawable.draw (tuval)'), sonra "Tuval" bir "Bitmap" için dökümü, bunu boyamanız gerekir. –

+2

İyi çocuklar şu an bunun hakkında hiçbir fikrim yok! Bu yüzden, doğru oyları kimin doğru olduğuna karar verelim :) –

6

(böylece onun için hiçbir kaynak var), bu kullanabilirsiniz:

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); 

O zaman MarkerOptions içine geçebilir BitmapDescriptor var.

+0

Bu, benim için boş görüntüler yaratıyor –

+0

Lütfen bu yaklaşımın tam olarak çalıştığı bir örnek için @vovahost tarafından gönderilen örneğe bakın. Bu cevap tam değil. – Alex

42

@Lukas Novak yanıt hiçbir şey göstermiyor çünkü aynı zamanda sınırları Drawable olarak ayarlamanız gerekiyor.
Bu, herhangi bir çekilebilir için çalışır. İşte tam bir çalışma örneği:

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

Bu gerçekten tam olarak çalışan bir örnek. Teşekkürler – Odys

+0

İlk işaretleyicim diğerlerinden daha büyük çizilmiş, bende tam olarak aynı kodu kullanıyorum. Sebebi ne olabilir? Başkalarıyla denediğim görüntü kaynağından bağımsız. – Recomer

+0

Bilmiyorum. Bazı kodları gönderin: programlı olarak oluşturursanız, çekilebilir xml veya cose'u oluşturmak için kullanılan cose. – vovahost