Intereting Posts
Не удалось выполнить цель com.jayway.maven.plugins.android.generation2 Освободить память от конкретной деятельности, когда она уничтожена ADB не запускается (сообщение об ошибке отсутствует) Правильное использование Classloader (особенно в Android) Безопасная публикация HTTP на Android Android – как часто виджет обновления, но только когда он виден? Любой способ изменить цвет радиокнопки? OnUpdate NEVER called – Android Widget Android: установите алфавитно-цифровую клавиатуру, чтобы сначала отобразить числовое значение в EditText Genymotion не запускает виртуальное устройство Android Что я должен использовать ImageButton или Button? Значение тега ориентации EXIF ​​всегда 0 для изображения, сделанного с помощью приложения для портфолио с вертикальной камерой Как написать выходы в Log in Android? Android: разница между невидимыми и ушла? Могу ли я добавить функцию контроля взгляда, такую ​​как youtube в Android VR, без использования Unity?

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