Android - 动态自定义地图标记

Android - Dynamic Custom Map Marker

我正在使用 Google 地图 V2。我正在尝试在 运行 时间使用来自服务器的图像和文本创建自定义标记。我想要一个像标记一样的气球,它会根据图像位图的大小进行拉伸,并在其顶部添加文本。

例如:

假设我有这样的气球图像:

这样的图片:

我想要实现的是将此图像放在气球内,并在图像上方添加一些文字,如下所示:

如果可能的话,我该如何实现?

我必须将最终图像作为标记选项的图标放置在 google 地图中,如下所示:

// Resource ID from the drawable folder
int balloon_id = getResources().getInteger(R.drawable.balloon_image);

// A bitmap image that came from the server (I got this done)
Bitmap image_from_server;

// Some text that came from the server (I got this done too)
String some_text;

// A method that will return the final resulted image to be placed to the marker options
// What I need is to find out the work out of this method (This is where I am struggling
BitmapDescriptor result_image = some_method(balloon_id, image_from_server, some_text);

// Marker Options for the custom marker
MarkerOptions mo = new MarkerOptions()
                  .position(latlng)
                  .icon(result_image);

// Then I can have my marker
Marker my_marker = google_map.addMarker(mo);

我已在 Whosebug 中寻找类似的解决方案,但无济于事。接受的答案将包含我正在努力构建的方法或我可以自己实现解决方案的非常好的方向(但请查看我的方法的参数及其内容 returns,如果我需要调整这不是一个大问题),在此先感谢!

好吧,您可以在 canvas 上绘制图像,相互叠加。这个函数就可以做到这一点。

所以你只需将 images/text 放在正确的位置并将它们创建为位图,然后按顺序叠加它们。

private Bitmap overlay(Bitmap bmp1, Bitmap bmp2) {
    Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth(), bmp1.getHeight(), bmp1.getConfig());
    Canvas canvas = new Canvas(bmOverlay);
    canvas.drawBitmap(bmp1, new Matrix(), null);
    canvas.drawBitmap(bmp2, new Matrix(), null);
    return bmOverlay;
}