Android谷歌地图v2:如何用多行片段添加标记?

有人知道如何将多行代码片段添加到Google地图标记吗? 这是我添加标记的代码:

map.getMap().addMarker(new MarkerOptions() .position(latLng()).snippet(snippetText) .title(header).icon(icon)); 

我想要片段看起来像这样:

 | HEADER | |foo | |bar | 

但是当我试图将snippetText设置为“foo \ n bar”时,我看到的只是foo bar ,我没有任何想法如何使其成为多行。 你可以帮我吗?

它看起来像你将需要创build自己的“信息窗口”的内容,使之工作:

  1. 创build一个覆盖getInfoContents()InfoWindowAdapter的实现,以返回你想要进入InfoWindow框架的内容

  2. GoogleMap上调用setInfoWindowAdapter() ,传递InfoWindowAdapter一个实例

这个示例项目演示了这种技术。 用"foo\nbar"代替我的代码片段正确地处理换行符。 然而,更有可能的是,你只是想出了一个布局,以避免需要的换行符,单独的TextView小部件为每个行在所需的视觉效果。

我已经完成了像下面这样的最简单的方法:

 private GoogleMap mMap; 

Google地图添加 标记时:

 LatLng mLatLng = new LatLng(YourLatitude, YourLongitude); mMap.addMarker(new MarkerOptions().position(mLatLng).title("My Title").snippet("My Snippet"+"\n"+"1st Line Text"+"\n"+"2nd Line Text"+"\n"+"3rd Line Text").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED))); 

之后,在Google Map上input以下InfoWindow 适配器的代码:

 mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() { @Override public View getInfoWindow(Marker arg0) { return null; } @Override public View getInfoContents(Marker marker) { LinearLayout info = new LinearLayout(mContext); info.setOrientation(LinearLayout.VERTICAL); TextView title = new TextView(mContext); title.setTextColor(Color.BLACK); title.setGravity(Gravity.CENTER); title.setTypeface(null, Typeface.BOLD); title.setText(marker.getTitle()); TextView snippet = new TextView(mContext); snippet.setTextColor(Color.GRAY); snippet.setText(marker.getSnippet()); info.addView(title); info.addView(snippet); return info; } }); 

希望它会帮助你。

build立在Hiren Patel的答案如Andrew S所示:

  mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() { @Override public View getInfoWindow(Marker arg0) { return null; } @Override public View getInfoContents(Marker marker) { Context context = getApplicationContext(); //or getActivity(), YourActivity.this, etc. LinearLayout info = new LinearLayout(context); info.setOrientation(LinearLayout.VERTICAL); TextView title = new TextView(context); title.setTextColor(Color.BLACK); title.setGravity(Gravity.CENTER); title.setTypeface(null, Typeface.BOLD); title.setText(marker.getTitle()); TextView snippet = new TextView(context); snippet.setTextColor(Color.GRAY); snippet.setText(marker.getSnippet()); info.addView(title); info.addView(snippet); return info; } });