it-swarm.com.ru

Маркеры карты с текстом в Google Maps Android API v2

Я подготовил этот пост, но он предназначен для устаревшего API Карт Google

http://tech.truliablog.com/2012/02/23/custom-map-markers-for-Android-google-maps/

В новом API я не смог найти простой способ сделать это. На самом деле, я не мог этого сделать вообще. 

По сути, я хочу иметь TextViews в качестве маркера на карте, а 9Patch можно рисовать в качестве фона текста. Trulia все еще делает это с новым API v2 в своем текущем приложении. Вы можете проверить это здесь

Trulia current app

Как я могу это сделать?

11
tasomaniac

Крис Бродфут создал служебную библиотеку, которая делает именно это.

Библиотека доступна здесь: https://github.com/googlemaps/Android-maps-utils

Также посмотрите это короткое видео: http://www.youtube.com/watch?v=nb2X9IjjZpM

33
MaciejGórski

Насколько я знаю, в настоящее время это не поддерживается в google maps api v2 . С другой стороны, вы можете динамически создавать растровое изображение для вашего маркера и записывать значение, которое хотите показать в нем. , Увы, могут возникнуть проблемы с производительностью, если у вас много контактов.

Canvas canvas = new Canvas(bitmap);
canvas.drawText("Your text", textXOffset, textYOffset, mPictoPaint);
MarkerOptions options = new MarkerOptions().position([…]).icon(BitmapDescriptorFactory.fromBitmap(bitmapResult));
Marker newMarker = map.addMarker(options);

Обратите внимание, что bitmap должен быть изменяемым. Также вам придется масштабировать базовое изображение (возможно, с помощью 9.patch) в соответствии с вашими потребностями.

5
Nerkatel

Это может быть просто достигнуто с помощью этой полезной библиотеки, предоставляемой Google.

IconGenerator icg = new IconGenerator(this);
icg.setColor(Color.GREEN); // green background 
icg.setTextAppearance(R.style.BlackText); // black text 
Bitmap bm = icg.makeIcon("200 mi");

В style.xml 

<style name="BlackText" parent="TextDefault">
    <item name="Android:textColor">@color/black</item>
</style>

http://googlemaps.github.io/Android-maps-utils/javadoc/

http://googlemaps.github.io/Android-maps-utils/

https://github.com/googlemaps/Android-maps-utils

5
Justcurious

Я знаю, что этот вопрос старый, но я опубликую свой ответ здесь, если он кому-нибудь поможет.

Ни одно из вышеуказанных решений не помогло мне, потому что

  • У меня уже есть пользовательские значки для маркеров в моем приложении

  • В моем приложении могут отображаться тысячи различных названий маркеров, поэтому создание большого количества изображений в памяти будет проблемой производительности

  • Поскольку значки маркеров становятся больше, карта становится очень быстро нечитаемой

  • Я хотел, чтобы заголовки отображались только при наличии места, возможно, при скрытии, если недостаточно места для отображения

Я не нашел решения в интернете, поэтому закатал рукава и сделал эту библиотеку, которая решает мою проблему, надеюсь, она поможет и другим:

https://github.com/androidseb/Android-google-maps-floating-marker-titles

Вот предварительный просмотр того, как это работает:

 preview

0
androidseb