在Google地图版本2中将可绘制的图像设置为标记

我正在使用这部分代码在Google地图版本2的MapFragment中添加一个标记。

 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中的不同图像。 任何帮助将不胜感激。

这是如何设置可DrawableMarker

 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和基于XMLDrawables 适用于此。

@卢卡斯·诺瓦克的答案是没有显示任何东西,因为你还必须设置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> 

如果你有编程创build的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