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自己的“信息窗口”的内容,使之工作:
-
创build一个覆盖
getInfoContents()
的InfoWindowAdapter
的实现,以返回你想要进入InfoWindow
框架的内容 -
在
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; } });