Intereting Posts
Как иметь несколько экземпляров службы на Android Текст кнопки Android не центрирован при использовании API 17 для рендеринга Проверьте, находится ли маркер внутри радиуса круга Быстрое приложение для Android – Java или родное? Почему бы не использовать всегда android: configChanges = "keyboardHidden | orientation"? Преобразование неизменяемого файла растрового изображения в изменчивое растровое изображение Значок уведомления о Lollipop слишком мал Обновленные представления настроек при использовании функции предпочтения Случайные атаки приложений на Android Wear 5.0.X Android ActivityOptions.isReturning () NullPointerException Анимация при изменении LayoutParams в LinearLayout Почему добавление if-statement внутри этого метода значительно замедляет его? Как сделать push-уведомление с сервера на Android-андроид «Минимизировать» действие в Android (не завершайте его) Не может запускать режим отладки в студии Android

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 и у меня нет идей, как сделать его многострочным. Вы можете мне помочь?

Solutions Collecting From Web of "Android Google Maps v2: как добавить маркер с многострочным фрагментом?"

Похоже, вам нужно будет создать собственное содержимое «информационного окна», чтобы сделать эту работу:

  1. Создайте реализацию InfoWindowAdapter которая переопределяет getInfoContents() чтобы вернуть то, что вы хотите перейти в кадр InfoWindow

  2. Вызовите setInfoWindowAdapter() в свой GoogleMap , передав экземпляр вашего 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))); 

После этого введите код для адаптера InfoWindow ниже на Карте Google :

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

Надеюсь, это поможет вам.

Основываясь на ответе Хирена Пател, как сказал Эндрю С:

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