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)
归档时间: |
|
查看次数: |
11889 次 |
最近记录: |