7

我正在使用 googlemap-android-api v2,并希望在运行时从位图创建标记。所以我这样做:

        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)then 它显示。但是,正如我所说,我想在运行时根据用户的输入进行更改。

任何提示?谢谢

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

4

2 回答 2

9

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

首先,我在运行时从路径创建一个 Drawable

Drawable drawable = Drawable.createFromPath(filePath);

然后我简单地将它添加到这样的标记中

mMap.addMarker(new MarkerOptions()
            .position(location)
            .title(title)
            .icon(BitmapDescriptorFactory.fromBitmap(((BitmapDrawable)drawable).getBitmap())));

我希望它有所帮助。

于 2013-09-24T15:21:58.587 回答
3

如果你有一个标记对象,那么你可以像下面的方法一样使用它。

 Bitmap smallDot = Bitmap.createScaledBitmap(getBitmapFromVectorDrawable(getApplicationContext(),
                R.drawable.red_dot), 15, 15, false);

marker.setIcon(BitmapDescriptorFactory.fromBitmap(smallDot));
于 2020-08-11T12:35:33.267 回答