Ich habe diesen Beitrag erstellt, aber er ist für die veraltete Google Maps-API
http://tech.truliablog.com/2012/02/23/custom-map-markers-for-Android-google-maps/
In der neuen API konnte ich keinen einfachen Weg finden, dies zu tun. Tatsächlich konnte ich es überhaupt nicht tun.
Grundsätzlich möchte ich TextViews als Marker auf der Karte haben und 9Patch als Hintergrund für den Text zeichnen. Trulia macht es immer noch mit der neuen API v2 in ihrer aktuellen App. Sie können es hier überprüfen
Wie kann ich das machen?
Chris Broadfoot hat eine Dienstprogrammbibliothek erstellt, die genau das tut.
Die Bibliothek ist hier verfügbar: https://github.com/googlemaps/Android-maps-utils
Sehen Sie auch dieses kurze Video: http://www.youtube.com/watch?v=nb2X9IjjZpM
Soweit ich weiß, wird dies derzeit nicht von Google Maps api v2 unterstützt. Was Sie dagegen tun können, ist die dynamische Erstellung der Bitmap für Ihre Markierung und die Eingabe des Werts, den Sie anzeigen möchten drin. Leider kann es leicht zu Leistungsproblemen kommen, wenn Sie viele Pins haben.
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);
Beachten Sie, dass bitmap
veränderlich sein muss. Außerdem müssen Sie das Basisbild (wahrscheinlich mit einem 9.patch) an Ihre Bedürfnisse anpassen.
Dies kann einfach mit dieser nützlichen Bibliothek von Google erreicht werden.
IconGenerator icg = new IconGenerator(this);
icg.setColor(Color.GREEN); // green background
icg.setTextAppearance(R.style.BlackText); // black text
Bitmap bm = icg.makeIcon("200 mi");
In style.xml
<style name="BlackText" parent="TextDefault">
<item name="Android:textColor">@color/black</item>
</style>
http://googlemaps.github.io/Android-maps-utils/javadoc/
unter Bezugnahme auf Googles Beispielcode
IconGenerator iconFactory = new IconGenerator(this);
iconFactory.setColor(Color.CYAN);
addIcon(mMap, iconFactory, "Custom color", new LatLng(-33.9360, 151.2070));
addIcon () Methode hier:
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);
}
Ich weiß, dass diese Frage alt ist, aber ich werde meine Antwort hier posten, falls sie jemandem hilft.
Keine der oben genannten Lösungen funktionierte für mich da
Ich habe bereits benutzerdefinierte Symbole für Markierungen in meiner App
Meine App zeigt möglicherweise Tausende verschiedener Markentitel an, sodass die Erstellung vieler Bilder im Speicher ein Leistungsproblem darstellen würde
Wenn die Markierungssymbole größer werden, wird die Karte sehr schnell unlesbar
Ich habe im Internet keine Lösung gefunden, also habe ich die Ärmel hochgekrempelt und diese Bibliothek erstellt, die mein Problem löst. Hoffentlich hilft sie auch anderen:
https://github.com/androidseb/Android-google-maps-floating-marker-titles
Hier ist eine Vorschau, wie es funktioniert: