始终在Android中显示地图标记标题

时间:2013-02-28 09:42:44

标签: java android google-maps

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

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

如何让标记始终显示标题和片段而不触摸?我也想禁用隐藏它们。

6 个答案:

答案 0 :(得分:89)

这很容易:

locationMarker.showInfoWindow();

答案 1 :(得分:4)

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

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

答案 2 :(得分:4)

使用showInfoWindow()并添加标记,如下所示。

Marker marker = mMap.addMarker(new MarkerOptions().position(currentPosition).title("Your text"));
marker.showInfoWindow();

答案 3 :(得分:3)

只为onMarkerClickListener返回false,如果返回true则显示infoWindow

点击标记时隐藏标题:

map.setOnMarkerClickListener(this);
...

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

如果我们返回真正的标题将被显示,否则如果我们返回假标题将不会显示。

答案 4 :(得分:1)

我知道这个问题很旧,但是如果有帮助,我会在这里发布答案。

信息窗口不适用于我的情况,我希望标题仅在有空间的情况下显示,如果没有足够的空间显示,可能会隐藏起来,以免彼此重叠。

我在互联网上找不到任何解决方案,所以我袖手旁观,制作了可以解决我的问题的库,希望它也可以对其他人有所帮助:

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

以下是其工作原理的预览:

preview

答案 5 :(得分:1)

按住,但这是我的答案:

在文档中,有一条文字说信息窗口一次显示一次,因此没有办法做到这一点:

  

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