当前位置: 首页 > 知识库问答 >
问题:

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

谈琛
2023-03-14

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

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

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

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

共有1个答案

昝存
2023-03-14

在文档中,它指出:

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

所以不,您不能使用常规的InfoView,但创建充当InfoView的标记并不难。

编辑

我将创建一个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();
 类似资料:
  • 我想为谷歌地图上的每个标记创建一个自己的窗口。我尝试了这个: 不幸的是,只有第二个标记有一个包含的窗口。如果我单击第一个标记,那么带有的第二个标记的窗口就会弹出。我不明白为什么会发生这种情况。 我注意到,如果我为第二个标记和第二个窗口使用一个新变量,每个标记都有自己的窗口,如下所示: 但我完全不明白为什么我需要使用新的变量。为什么我不能覆盖旧的变量? 注意:这个问题是关于如何获取多个不同的info

  • 我对KML很陌生。我有一个excel电子表格,其中包含一系列(大约2000个)地址。它不包含横向/纵向坐标。地址的每一部分都在一个单独的列中。地址/地址2/城市/州/邮编。。。等 使用谷歌地图引擎,我能够生成一张上面有一堆标记的地图。我通过谷歌地图引擎中的链接将我的地图导出到KML。这导致了如下所示的地方标记数据: 信息窗口包含了地址,一切看起来都很好。 然后,我尝试将页面上的KML文件与goog

  • 我是一个初学者,试图编写一个正在运行的应用程序,但遇到了一个问题。我每隔几秒钟运行一次循环,并希望在上显示一个标记如果时间已超过这些运行的总时间,我的问题是当一个弹出时,它必须关闭其他的,因为我只有在lastMarker之后才会出现最好的Marker窗口。这是我的代码- 如果任何人有一个解决方案,使两个窗口保持同时打开,将不胜感激!

  • 信息窗格显示对象的详细信息、项目活动日志、数据库对象的 DDL、对象相依性、用户或角色的成员资格和预览。如果信息窗格已隐藏,从菜单栏选择“查看”->“信息窗格”->“显示信息窗格”。 你可以选择任何连接、对象或项目,然后在信息窗格中选择相应的按钮。 按钮 描述 常规 - 显示对象或项目的常规信息。 预览 - 显示查询的 SQL 语句。 DDL - 显示对象的 DDL 语句。 使用 - 显示已选择对

  • 信息窗格显示对象的详细信息、项目活动日志、数据库对象的 DDL、对象相依性、用户或角色的成员资格和预览。如果信息窗格已隐藏,从菜单栏选择“查看”->“信息窗格”->“显示信息窗格”。 你可以选择任何连接、对象或项目,然后在信息窗格中选择相应的按钮。 按钮 描述 常规 - 显示对象或项目的常规信息。 预览 - 显示查询的 SQL 语句。 DDL - 显示对象的 DDL 语句。 使用 - 显示已选择对

  • 信息窗格显示对象的详细信息、项目活动日志、数据库对象的 DDL、对象相依性、用户或角色的成员资格和预览。如果信息窗格已隐藏,从菜单栏选择“查看”->“信息窗格”->“显示信息窗格”。 你可以选择任何连接、对象或项目,然后在信息窗格中选择相应的按钮。 按钮 描述 常规 - 显示对象或项目的常规信息。 预览 - 显示查询的 SQL 语句。 DDL - 显示对象的 DDL 语句。 使用 - 显示已选择对