【问题标题】:Multiple Info Windows in Android Maps API 2Android Maps API 2 中的多个信息窗口
【发布时间】:2013-02-26 05:45:21
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: android google-maps


    【解决方案1】:

    在文档中指出:

    由于任何时候都只显示一个信息窗口,因此 提供者可以选择重用视图,也可以选择创建新的视图 每个方法调用的视图。

    因此,您不能使用常规信息视图来做到这一点,但创建充当信息视图的标记并不难。

    编辑

    我会在 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>
    

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

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

    【讨论】:

    • @SorinComanescu 好吧,我打算用这样的东西:stackoverflow.com/a/3036736/969325。但事实证明,当你夸大自己的观点时,这有点困难。但这将是我尝试的路径。也就是说,我从来没有这样做过,似乎没有替代谷歌地图的旧方法(使用 itemizedoverlay)。
    • @SorinComanescu 我设法弄明白了。我添加了一个带有解释的简单示例。
    • 看起来不错,我明天试试。谢谢。
    • 效果很好。对其进行了一些调整,使 TextView 的背景为半透明并具有圆角,如此处所述:androidforums.com/application-development/…
    • @SorinComanescu 是的,我也会这样做:)。很高兴它成功了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    相关资源
    最近更新 更多