Ответ 1
Крис Бродфут создал служебную библиотеку, которая делает именно это.
Библиотека доступна здесь: https://github.com/googlemaps/android-maps-utils
Также посмотрите это короткое видео: http://www.youtube.com/watch?v=nb2X9IjjZpM
Я придумал этот пост, но он предназначен для устаревших API Карт Google.
http://tech.truliablog.com/2012/02/23/custom-map-markers-for-android-google-maps/
В новом API я не смог найти простой способ сделать это. На самом деле, я не мог этого сделать.
В основном я хочу иметь TextViews как маркер на карте с 9Patch, который можно извлечь в качестве фона текста. Trulia все еще делает это с новым API v2 в своем текущем приложении. Вы можете проверить его здесь.
Как я могу это сделать?
Крис Бродфут создал служебную библиотеку, которая делает именно это.
Библиотека доступна здесь: https://github.com/googlemaps/android-maps-utils
Также посмотрите это короткое видео: http://www.youtube.com/watch?v=nb2X9IjjZpM
Это может быть просто достигнуто с помощью этой полезной библиотеки, предоставленной 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
Вы можете установить верхние ссылки в своем проекте из этой ссылки link
Насколько я знаю, в настоящее время это не поддерживается картами google 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) по вашему желанию.
Я знаю, что этот вопрос старый, но я опубликую свой ответ здесь, если он кому-нибудь поможет.
Ни одно из приведенных выше решений не помогло мне, потому что
У меня уже есть пользовательские значки для маркеров в моем приложении
В моем приложении могут отображаться тысячи разных названий маркеров, поэтому создание большого количества изображений в памяти будет проблемой производительности
Когда значки маркеров становятся больше, карта становится очень нечитаемой
Я не нашел решения в интернете, поэтому закатал рукава и сделал эту библиотеку, которая решает мою проблему, надеюсь, она поможет и другим:
https://github.com/androidseb/android-google-maps-floating-marker-titles
Вот предварительный просмотр того, как это работает:
ссылаясь на пример кода Google
IconGenerator iconFactory = new IconGenerator(this);
iconFactory.setColor(Color.CYAN);
addIcon(mMap, iconFactory, "Custom color", new LatLng(-33.9360, 151.2070));
Метод addIcon() здесь:
private void addIcon(GoogleMap googleMap, IconGenerator iconFactory, CharSequence text, LatLng position) {
MarkerOptions markerOptions = new MarkerOptions().
icon(BitmapDescriptorFactory.fromBitmap(iconFactory.makeIcon(text))).
position(position).
anchor(iconFactory.getAnchorU(), iconFactory.getAnchorV());
googleMap.addMarker(markerOptions);
}