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

Posted

技术标签:

【中文标题】始终在 Android 中显示地图标记标题【英文标题】:Always show map marker title in Android 【发布时间】:2013-02-14 10:41:35 【问题描述】:

我正在通过以下方式将默认标记添加到 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);

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

【问题讨论】:

【参考方案1】:

很简单:

locationMarker.showInfoWindow();

【讨论】:

【参考方案2】:

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

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

【讨论】:

看起来好像几个标记不能在不点击它们的情况下同时显示信息? 谢谢,微软的文档中没有【参考方案3】:

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

点击标记时隐藏标题:

map.setOnMarkerClickListener(this);
...

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

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

【讨论】:

谷歌地图 v2 有可能吗?我返回 false 但标记仍显示标题... 是的。它适用于 V2。我只尝试了 v2。另一种选择是,将标题作为空字符串。 IE ””。但是不好【参考方案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);

【讨论】:

【参考方案5】:

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

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

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

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

这是它的工作原理的预览:

【讨论】:

【参考方案6】:

坚持,但这是我的答案:

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

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

地图 api 文档说:

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

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

【讨论】:

以上是关于始终在 Android 中显示地图标记标题的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 地图活动中显示特定标记?

Android 地图 v2 缩放以显示所有标记

如何在 Android 中使用 Google 地图按类别隐藏/显示标记组?

如何在 Android 上的 Google 地图上的标记旁边显示标签?

在 Android 中使用谷歌地图在触摸位置添加标记

android谷歌地图json中的标记