Android - 动态自定义地图标记

时间:2015-04-02 19:41:32

标签: android google-maps dynamic marker

我正在使用Google Maps V2。我试图在运行时使用来自服务器的图像和文本创建自定义标记。我希望有一个像标记一样的气球,它会根据图像位图的大小拉伸,上面有一个文字。

例如:

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

enter image description here

像这样的图像:

enter image description here

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

enter image description here

如果有可能,我该如何实现?

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

// 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);

我已经研究过StackOverflow类似的解决方案无济于事。接受的答案将包含我正在努力构建的方法或者我可以自己实现解决方案的非常好的方向(但是如果我需要调整,请查看我的方法的参数和它返回的内容这不是一个大问题),提前谢谢!

1 个答案:

答案 0 :(得分:1)

嗯,你可以在canvas上绘制你的图像,彼此重叠。这个功能可以做到这一点。

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

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;
}