我正在使用googlemap-android-api v2,并希望在运行时从Bitmap创建标记。所以我这样做:
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap bitmap = BitmapFactory.decodeFile(filePath, options);
//create the thumbnail to use as marker
Bitmap thumbnail = ThumbnailUtils.extractThumbnail(bitmap,10,10);
MarkerOptions markerOptions = new MarkerOptions().position(currentLatLng).icon(BitmapDescriptorFactory.fromBitmap(thumbnail));
mMap.addMarker(markerOptions)
它似乎永远不会起作用,我确信bitmap
和thumbnail
都不为空。如果不使用.fromBitmap
,我会使用.fromResource(R.drawable.some_image)
然后显示。但是,正如我所说,我希望在用户输入的运行时更改。
任何提示?感谢
更新
标记确实显示我是否在托管地图的活动/片段的onResume()
处添加它(即使用上面的代码)。我在onActivityResult()
使用此代码之前,在用户浏览文件以获取filePath
之后。对我来说,它仍然很奇怪,因为onActivityResult()
在UI线程上。无论如何,无论如何。
答案 0 :(得分:5)
我正在做同样的事情,如下面的
首先,我从运行时路径
创建一个DrawableDrawable drawable = Drawable.createFromPath(filePath);
然后我只需将它添加到标记中就像这样
mMap.addMarker(new MarkerOptions()
.position(location)
.title(title)
.icon(BitmapDescriptorFactory.fromBitmap(((BitmapDrawable)drawable).getBitmap())));
我希望它有所帮助。
答案 1 :(得分:0)
如果您有标记对象,则可以像下面的方法一样使用它。
Bitmap smallDot = Bitmap.createScaledBitmap(getBitmapFromVectorDrawable(getApplicationContext(),
R.drawable.red_dot), 15, 15, false);
marker.setIcon(BitmapDescriptorFactory.fromBitmap(smallDot));