在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中的不同图像。 任何帮助将不胜感激。
这是如何设置可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
不适用于此。
@卢卡斯·诺瓦克的答案是没有显示任何东西,因为你还必须设置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
。