Android Maps API 2中的多个信息窗口

Mar*_*tin 18 android google-maps

我正在使用Maps API v2在Android上编写基于地图的应用.

我已经在地图上放置了标记,并且可以显示这些标记的自定义信息窗口,但AFAICT一次只能显示一个信息窗口.有几个我想要不同行为的地方:我想总是显示多个窗口的信息窗口,而不显示标记.

我想我可以编写一些代码来将信息窗口绘制到位图支持的画布,并将这些位图作为标记"图标"传递给地图.这种总结了我正在努力做的事情:我希望信息窗口成为我的标记.但是这种方法需要我编写自己的窗口框架绘图代码,我宁愿避免.

是否有更好的方法支持一次显示多个信息窗口?

War*_*zit 21

在文档中,它指出:

由于任何时候只显示一个信息窗口,因此该提供程序可以选择重用视图,也可以选择在每个方法调用上创建新视图.

所以,你不能用常规的信息视图来做到这一点,但创建充当信息视图的标记并不太难.

编辑

我将在xml中创建一个您想用作标记/对话框的视图.像这样的东西:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:orientation="vertical"
    android:background="@android:color/white"
    >
    <TextView
        android:text="test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <ImageView 
        android:src="@drawable/ic_launcher"
        android:layout_width="50dp"
        android:layout_height="50dp"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

然后我将此视图转换为位图并使用该位图作为我的标记:

        ImageView image = (ImageView) findViewById(R.id.main_image);

        LinearLayout tv = (LinearLayout) this.getLayoutInflater().inflate(R.layout.test_layout, null, false);
        tv.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
                MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
        tv.layout(0, 0, tv.getMeasuredWidth(), tv.getMeasuredHeight()); 

        tv.setDrawingCacheEnabled(true);
        tv.buildDrawingCache();
        Bitmap bm = tv.getDrawingCache();
Run Code Online (Sandbox Code Playgroud)

  • @SorinComanescu我设法弄清楚了.我添加了一个简单的解释示例. (2认同)