android,在googlemap上添加Bitmap中的Marker

时间:2013-09-24 15:03:27

标签: android google-maps-android-api-2

我正在使用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)

它似乎永远不会起作用,我确信bitmapthumbnail都不为空。如果不使用.fromBitmap,我会使用.fromResource(R.drawable.some_image)然后显示。但是,正如我所说,我希望在用户输入的运行时更改。

任何提示?感谢

更新 标记确实显示我是否在托管地图的活动/片段的onResume()处添加它(即使用上面的代码)。我在onActivityResult()使用此代码之前,在用户浏览文件以获取filePath之后。对我来说,它仍然很奇怪,因为onActivityResult()在UI线程上。无论如何,无论如何。

2 个答案:

答案 0 :(得分:5)

我正在做同样的事情,如下面的

首先,我从运行时路径

创建一个Drawable
Drawable 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));