Android Google Maps v2:как добавить маркер с многострочным фрагментом?
кто-нибудь знает, как добавить многострочный фрагмент в маркер Google Maps? Вот мой код для добавления маркеров:
map.getMap().addMarker(new MarkerOptions()
.position(latLng()).snippet(snippetText)
.title(header).icon(icon));
Я хочу, чтобы фрагмент выглядел так:
| HEADER |
|foo |
|bar |
но когда я пытаюсь установить snippetText в "foo N bar", я вижу только foo bar и у меня нет никаких идей, как сделать его многострочным. Вы можете мне помочь?
4 ответов:
похоже, вам нужно будет создать свой собственный" информационное окно " содержание, чтобы сделать эту работу:
создать реализацию
InfoWindowAdapter, который переопределяетgetInfoContents()чтобы вернуть то, что вы хотите поехать вInfoWindowрамавызов
setInfoWindowAdapter()наGoogleMap, передав экземплярInfoWindowAdapterэтот пример проекта демонстрирует технику. Замена моих фрагментов на
"foo\nbar"правильно обрабатывает новую строку. Однако, скорее всего, вы просто придумаете макет, который позволяет избежать необходимости в новой строке, с отдельнымTextViewвиджеты для каждой строки в желаемых визуальных результатах.
Я сделал с самым простым способом, как показано ниже:
private GoogleMap mMap;пока добавлятьмаркер on Google Map:
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)));после этого поставьте ниже код для InfoWindowадаптер on Google Map:
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; } });надеюсь, что это поможет вам.
дом на ответ Хирена Пателя как предложил Андрей 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; } });
mMap.setOnMapClickListener (новая карта Google.OnMapClickListener () {
@Override public void onMapClick(LatLng point) { // Already two locations if (markerPoints.size() > 1) { markerPoints.clear(); mMap.clear(); } // Adding new item to the ArrayList markerPoints.add(point); // Creating MarkerOptions MarkerOptions options = new MarkerOptions(); // Setting the position of the marker options.position(point); if (markerPoints.size() == 1) { options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.markerss)).title("Qtrip").snippet("Balance:\nEta:\nName:"); options.getInfoWindowAnchorV(); } else if (markerPoints.size() == 2) { options.icon(BitmapDescriptorFactory.fromResource(R.mipmap.markerss)).title("Qtrip").snippet("End"); } 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; } }); mMap.addMarker(options);
Comments