39

我通过以下方式将默认标记添加到 GoogleMap:

GoogleMap map = ((MapFragment) getFragmentManager().findFragmentById(R.id.editMapMap)).getMap();

MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(currentLocation.getCoordinate());
markerOptions.title(Utils.getLocationString(currentLocation.getCoordinate()));
markerOptions.snippet("Blah");

locationMarker = map.addMarker(markerOptions);
locationMarker.setDraggable(true);

如何使标记始终显示标题和片段而无需触摸?我还想禁用在触摸时隐藏它们。

4

6 回答 6

102

这很容易:

locationMarker.showInfoWindow();
于 2013-04-22T12:32:45.187 回答
6

使用showInfoWindow()和添加标记如下。

Marker marker = mMap.addMarker(new MarkerOptions().position(currentPosition).title("Your text"));
marker.showInfoWindow();
于 2017-05-03T12:56:23.460 回答
5

只需返回 false 即可onMarkerClickListener,如果返回 true 则显示infoWindow.

当我们点击标记时隐藏标题:

map.setOnMarkerClickListener(this);
...

@Override
public boolean onMarkerClick(Marker arg0) {     
  Log.i(TAG,"marker arg0 = "+arg0);               
  return false;
}

如果我们返回 true 标题将被显示,否则如果我们返回 false 标题将不会显示。

于 2013-11-21T16:44:14.587 回答
5

有两种显示和隐藏标记的方法。布尔返回值只是阻止默认行为发生 (false) 或允许它发生 (true)。换句话说,它会通知系统您是否消费了该事件。请参阅Google API 参考

private GoogleMap.OnMarkerClickListener onMarkerClickedListener = new GoogleMap.OnMarkerClickListener() {
    @Override
    public boolean onMarkerClick(Marker marker) {
        if (marker.isInfoWindowShown()) {
            marker.hideInfoWindow();
        } else {
            marker.showInfoWindow();
        }
        return true;
    }
};

mGoogleMap.setOnMarkerClickListener(onMarkerClickedListener);
于 2015-05-12T20:14:47.980 回答
2

我知道这个问题很老,但我会在这里发布我的答案,以防它帮助某人。

信息窗口不适用于我的情况,我希望标题仅在有空间时显示,如果没有足够的空间显示,可能会隐藏,以免它们相互重叠。

我在互联网上没有找到解决方案,所以我卷起袖子制作了这个库来解决我的问题,希望它也能帮助其他人:

https://github.com/androidseb/android-google-maps-floating-marker-titles

这是它如何工作的预览:

预习

于 2018-08-12T18:13:57.403 回答
1

坚持,但这是我的答案:

从文档中,有一条文字说信息窗口一次显示一个,所以没有办法做到这一点:

“信息窗口允许您在用户点击标记时向用户显示信息。一次只显示一个信息窗口。如果用户单击标记,当前信息窗口将关闭,新信息窗口将被显示。请注意,如果用户单击当前显示信息窗口的标记,则该信息窗口将关闭并重新打开。

地图 api 文档 说:

“最佳实践:为获得最佳用户体验,任何时候都应在地图上打开一个信息窗口。多个信息窗口会使地图显得杂乱无章。如果您一次只需要一个信息窗口,则可以只创建一个InfoWindow对象并在地图事件(例如用户点击)时在不同位置或标记处打开它。如果您确实需要多个信息窗口,您可以同时显示多个InfoWindow对象。

https://developers.google.com/maps/documentation/javascript/infowindows

于 2018-11-01T15:37:09.707 回答