2

在 Android 中,我有一个 MapQuest MapViewMapView有一个DefaultItemizedOverlay带有一个的,OverlayItem单击时会显示一个AnnotationView。这基本上是 MapQuest 在其入门指南的覆盖部分中演示的内容。

这工作得很好,但一些人注意到没有办法关闭注释。用户可以单击另一个OverlayItem来显示其注释,但没有办法隐藏一个而不打开另一个。我可以在注释中添加一个按钮来关闭它,但是当用户在注释之外点击时我更愿意让它关闭。有没有方便的方法呢?

叠加层已经有一个OverlayTapListener显示注释的。我正在考虑修改它的逻辑,但我发现它只有在点击覆盖项目时才会被调用,而不是在用户点击其他地方时调用。没有覆盖覆盖的onTouchEvent()方法并通过小的更改复制其逻辑,有没有人对如何实现这一点有任何想法?

4

1 回答 1

0

我在同样的问题上挣扎了很多,最后我找到了解决方法!

myMapView.addMapViewEventListener(new MapView.MapViewEventListener() {
    @Override
    public void moveStart(MapView mapView) { }
    @Override
    public void move(MapView mapView) { }
    @Override
    public void moveEnd(MapView mapView) { }
    @Override
    public void touch(MapView mapView) {
        annotation.hide();
    }
    @Override
    public void longTouch(MapView mapView) { }
    @Override
    public void zoomStart(MapView mapView) { }
    @Override
    public void zoomEnd(MapView mapView) { }
    @Override
    public void mapLoaded(MapView mapView) { }
});

如果单击地图上的标记以外的任何位置,它基本上会关闭注释。

希望它可以帮助那些努力使用免费 MapQuest API 的人。

于 2015-03-25T20:00:07.850 回答