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

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

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

我想我可以写一些代码来绘制信息窗口到位图支持的canvas,并将这些位图作为标记“图标”传递给地图。 这种总结我想要做的很好:我希望信息窗口成为我的标记。 但是这种方法需要我写我自己的窗框代码,我宁愿避免。

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

Solutions Collecting From Web of "Android Maps API 2中的多个信息窗口"

在文档中指出:

由于任何时候都只显示一个信息窗口,因此这个提供者可以select重用视图,或者可以select在每个方法调用上创build新的视图。

所以不,你不能用常规的信息浏览器做,但是创build充当信息浏览器的标记并不难。

编辑

我会在xml中创build一个你想用作标记/对话框的视图。 像这样的东西:

<?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> 

然后我将这个视图转换成一个位图,并使用该位图作为我的标记:

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