Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Osmdroid:单击时显示和隐藏标记说明_Java_Focus_Hide_Overlay_Osmdroid - Fatal编程技术网

Java Osmdroid:单击时显示和隐藏标记说明

Java Osmdroid:单击时显示和隐藏标记说明,java,focus,hide,overlay,osmdroid,Java,Focus,Hide,Overlay,Osmdroid,我正在用Android Studio用Java编写一个应用程序。 我已经使用osmdroid显示了一张地图,添加了一些覆盖图以在特殊位置显示标记,并为标记添加了标题和说明 现在,我使用setFocusItemsOnTap方法在单击时显示标记的标题和说明。 我的问题是,我无法在第二次单击时隐藏标记的标题和说明,因此如果它已经显示。有没有办法做到这一点 或者,如果不可能,是否有办法使用setFocusItemsOnTab方法一次只显示一个标记的标题和说明 public static List<

我正在用Android Studio用Java编写一个应用程序。 我已经使用osmdroid显示了一张地图,添加了一些覆盖图以在特殊位置显示标记,并为标记添加了标题和说明

现在,我使用setFocusItemsOnTap方法在单击时显示标记的标题和说明。 我的问题是,我无法在第二次单击时隐藏标记的标题和说明,因此如果它已经显示。有没有办法做到这一点

或者,如果不可能,是否有办法使用setFocusItemsOnTab方法一次只显示一个标记的标题和说明

public static List<OverlayItem> items = new ArrayList<OverlayItem>();

//[...]

items.add(new OverlayItem("uid1","Title", "Description", new GeoPoint(51.398,6.875)));

//[...]

List<OverlayItem> currentList;
currentList = new ArrayList<OverlayItem>();
        currentList.add(items.get(i));

//[...]

final ItemizedOverlayWithFocus<OverlayItem> mOverlay = new ItemizedOverlayWithFocus<OverlayItem>(this, currentList, new ItemizedIconOverlay.OnItemGestureListener<OverlayItem>() {
                @Override
                public boolean onItemSingleTapUp(final int index, final OverlayItem item) {
                    //here it should decide if the title & description is already shown or not. (true => hide it, false => display it)
                    return true;
                }
                @Override
                public boolean onItemLongPress(final int index, final OverlayItem item) {
                    return false;
                }
        });

mOverlay.setFocusItemsOnTap(true);
我必须使用代码的这些部分,因为我想添加不同的标记,并且我想能够集中所有标记。我还需要能够在运行时将它们添加到动态列表中


谢谢你的帮助

如果你坚持使用itemizedictionoverlay,我相信你一次只能有一个弹出窗口。您必须将itemizedictionoverlay子类化并重写draw方法,以支持一次呈现多个项目的弹出窗口


我想你在Marker课上会更走运。它已经支持单击关闭功能。同样,一次只能显示一个标记弹出窗口。这可以通过为每个标记提供您自己的InfoWindow实例来覆盖。

谢谢,我使用ItemizedOnOverlay而不是ItemizedOverlayWithFocus和osmbonuspack解决了这个问题