2015-04-02 174 views
0

我正在使用Google Maps V2。我試圖在運行時使用來自服務器的圖像和文本創建自定義標記。我想有一個像標記一樣的氣球,它會根據圖像位圖的大小以及文本的大小來展開。Android - 動態自定義地圖標記

例如:

可以說我有一個像這樣的氣球像:

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

那麼,你可以在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; 
}